التعبيرات المنتظمة في PHP: أداة قوية للعمل مع النصوص
التعبيرات المنتظمة (regex) هي تسلسلات من الأحرف تحدد نمطًا للبحث والتلاعب بالسلاسل النصية. في PHP، يتم تنفيذها من خلال مكتبة PCRE (Perl Compatible Regular Expressions) وتوفر للمطورين إمكانيات مرنة للتحقق من صحة البيانات، وتحليل النصوص، واستبدال السلاسل الفرعية. في هذه المقالة، سنشرح الوظائف الأساسية، وبناء الجملة، والأمثلة العملية لاستخدام التعبيرات المنتظمة في PHP.
الوظائف الأساسية في PHP للعمل مع التعبيرات المنتظمة
توجد في PHP عدة وظائف رئيسية تسمح بالعمل مع التعبيرات المنتظمة. دعنا نستعرض أهمها.
preg_match() — البحث عن أول تطابق
الدالة preg_match() تبحث عن أول تطابق مع النمط في السلسلة النصية. ترجع 1 إذا تم العثور على تطابق، و0 إذا لم يتم، وFALSE في حالة حدوث خطأ.
<?php$text = "بريدي الإلكتروني: example@mail.com و test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "تم العثور على بريد إلكتروني: " . $matches[0]; // سيطبع: تم العثور على بريد إلكتروني: example@mail.com}?>preg_match_all() — البحث عن جميع التطابقات
على عكس preg_match()، هذه الدالة تجد جميع التطابقات في السلسلة النصية وتضعها في مصفوفة متعددة الأبعاد.
<?php$text = "بريدي الإلكتروني: example@mail.com و test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);print_r($matches[0]);// سيطبع: Array ( [0] => example@mail.com [1] => test@domain.org )?>preg_replace() — الاستبدال وفقًا للنمط
الدالة preg_replace() تستبدل جميع التطابقات مع النمط بسلسلة نصية محددة. وهي تدعم المراجع العكسية والمعدلات.
<?php$text = "اليوم 15.03.2024، وغدًا سيكون 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";
echo preg_replace($pattern, $replacement, $text);// سيطبع: اليوم 2024-03-15، وغدًا سيكون 2024-03-16?>preg_split() — تقسيم السلسلة النصية وفقًا للنمط
الدالة preg_split() تقسم السلسلة النصية إلى مصفوفة وفقًا للنمط المحدد. وهي مشابهة لـ explode()، ولكن مع دعم التعبيرات المنتظمة.
<?php$text = "تفاحة، كمثرى؛ موز: برتقال";$pattern = "/[,;: ]+/";
$fruits = preg_split($pattern, $text);print_r($fruits);// سيطبع: Array ( [0] => تفاحة [1] => كمثرى [2] => موز [3] => برتقال )?>بناء جملة التعبيرات المنتظمة
التعبيرات المنتظمة في PHP تُحاط بمحددات (عادةً شرطات مائلة /) ويمكن أن تحتوي على معدلات بعد المحدد الختامي. دعنا نستعرض العناصر الأساسية لبناء الجملة.
الرموز الوصفية ومحددات الكمية
- فئات الأحرف:
.(أي حرف)،\\d(رقم)،\\w(حرف، رقم، شرطة سفلية)،\\s(حرف مسافة بيضاء) - محددات الكمية:
*(0 أو أكثر)،+(1 أو أكثر)،?(0 أو 1)،{n,m}(من n إلى m) - المراسي:
^(بداية السلسلة)،$(نهاية السلسلة)،\\b(حدود الكلمة) - التجميع:
()(التقاط المجموعة)،(?:)(مجموعة غير ملتقطة) - البديل:
|(أو المنطقي)
معدلات الأنماط
i— بحث غير حساس لحالة الأحرفm— الوضع متعدد الأسطر (^ و $ يعملان لكل سطر)s— الرمز الوصفي . يتضمن حرف السطر الجديدu— دعم Unicode (إلزامي للعمل مع