التعبيرات المنتظمة في PHP: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعبيرات المنتظمة في PHP: من الأساسيات إلى التقنيات المتقدمة



التعبيرات المنتظمة (regex) هي أداة قوية للبحث والاستبدال وتحليل البيانات النصية. في PHP، تم تنفيذها من خلال مجموعة وظائف PCRE (Perl Compatible Regular Expressions). في هذه المقالة، سنشرح أساسيات العمل مع التعبيرات المنتظمة، وسنستعرض الوظائف الرئيسية ونقدم أمثلة عملية ستساعدك على أتمتة معالجة السلاسل النصية.



1. الوظائف الأساسية للعمل مع التعبيرات المنتظمة في PHP



توفر PHP العديد من الوظائف المضمنة للعمل مع التعبيرات المنتظمة. دعنا نستعرض أشهرها.



preg_match() — البحث عن تطابق

تتحقق الدالة preg_match() مما إذا كانت السلسلة النصية تطابق النمط المحدد. ترجع 1 إذا تم العثور على تطابق، و 0 في الحالة المعاكسة.



<?php$text = "مرحباً بالعالم! PHP رائعة.";$pattern = "/PHP/";

if (preg_match($pattern, $text)) { echo "تم العثور على كلمة 'PHP'!";} else { echo "لا توجد تطابقات.";}?>


إذا كنت بحاجة للحصول على التطابق نفسه، قم بتمرير وسيط ثالث — مصفوفة للنتائج:



<?php$text = "بريدي الإلكتروني: user@example.com";$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";

if (preg_match($pattern, $text, $matches)) { echo "تم العثور على البريد الإلكتروني: " . $matches[0];}?>


preg_replace() — الاستبدال وفقاً لنمط

تستبدل الدالة preg_replace() جميع التطابقات مع النمط بسلسلة نصية محددة. هذا مشابه لـ str_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] => برتقال )?>


2. الرموز الوصفية وبناء جملة التعبيرات المنتظمة



لاستخدام التعبيرات المنتظمة بفعالية، من الضروري فهم بناء جملتها. إليك الرموز الوصفية الأساسية:



  • . — أي حرف (باستثناء السطر الجديد)
  • ^ — بداية السلسلة النصية
  • $ — نهاية السلسلة النصية
  • * — 0 تكرار أو أكثر
  • + — تكرار واحد أو أكثر
  • ? — 0 أو 1 تكرار
  • \\d — رقم (0-9)
  • \\w — حرف أو رقم أو شرطة سفلية
  • \\s — حرف مسافة بيضاء
  • [abc] — أي حرف من المجموعة
  • (...) — مجموعة التقاط


مثال: التحقق من رقم الهاتف

<?php$phone = "+7 (123) 456-78-90";$pattern = "/^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$/";

if (preg_match($pattern, $phone)) { echo "رقم الهاتف صحيح!";} else { echo "تنسيق رقم غير صحيح.";}?>


3. التقنيات المتقدمة والمعدلات



تغير المعدلات سلوك التعبير المنتظم. يتم تحديدها بعد الشرطة المائلة للإغلاق. دعنا نستعرض الأكثر فائدة:



  • i — بحث غير حساس لحالة الأحرف
  • m — وضع متعدد الأسطر (^ و $ يعملان لكل سطر)
  • s — النقطة تتضمن حرف السطر الجديد
  • u — يدعم

المدونات

توصيات الكتب