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

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

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

ابدأ الدورة

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



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



في هذه المقالة، سنشرح التعبيرات المنتظمة في PHP مع أمثلة يمكنك تطبيقها فورًا في مشاريعك. لن نتعمق في النظرية - فقط التطبيق العملي، الكود، والسيناريوهات الحقيقية.



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



في PHP، هناك ثلاث دوال رئيسية تغطي 95% من المهام:



  • preg_match() - البحث عن أول تطابق.
  • preg_match_all() - البحث عن جميع التطابقات.
  • preg_replace() - الاستبدال وفقًا للنمط.
  • preg_split() - تقسيم السلسلة النصية وفقًا للنمط.


تتطلب جميع الدوال ثلاث معاملات: النمط (pattern)، السلسلة النصية (subject)، والعلامات الاختيارية.



مثال 1: التحقق من البريد الإلكتروني



<?php$email = "user@example.com";$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/";

if (preg_match($pattern, $email)) { echo "البريد الإلكتروني صحيح";} else { echo "البريد الإلكتروني غير صحيح";}?>


دعنا نحلل النمط: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/

  • ^ - بداية السلسلة النصية.
  • [a-zA-Z0-9._%+-]+ - حرف واحد أو أكثر من الأحرف المسموح بها.
  • @ - الرمز @ حرفيًا.
  • [a-zA-Z0-9.-]+ - اسم النطاق.
  • \\. - النقطة (مشوشرة).
  • [a-zA-Z]{2,} - منطقة النطاق (حرفان على الأقل).
  • $ - نهاية السلسلة النصية.


مثال 2: استخراج جميع الروابط من HTML



<?php$html = '<a href="https://pythonlib.ru">الموقع</a> و <a href="/about">معلومات عنا</a>';$pattern = '/href="([^"]+)"/';

preg_match_all($pattern, $html, $matches);

print_r($matches[1]); // سيعرض مصفوفة الروابط?>


هنا ([^"]+) هي مجموعة التقاط تبحث عن كل شيء باستثناء علامات الاقتباس داخل السمة href.



2. المعدّلات وتطبيقاتها العملية



المعدّلات تغير سلوك التعبير المنتظم. توضع بعد الشرطة المائلة للإغلاق (/).



  • i - بحث غير حساس لحالة الأحرف.
  • m - وضع متعدد الأسطر (^ و $ يعملان لكل سطر).
  • s - النقطة تشمل فاصل الأسطر.
  • U - وضع كسول (الوضع الافتراضي هو الجشع).
  • u - دعم UTF-8.


مثال 3: البحث عن كلمة بدون مراعاة حالة الأحرف



<?php$text = "PHP هي لغة قوية. php تُستخدم في كل مكان.";$pattern = "/php/i";

preg_match_all($pattern, $text, $matches);echo count($matches[0]); // سيعرض 2?>


مثال 4: العمل مع السيريلية (UTF-8)



<?php$text = "Привет, мир!";$pattern = "/[а-яё]+/ui"; // u - UTF-8, i - عدم حساسية لحالة الأحرف

preg_match_all($pattern, $text, $matches);print_r($matches[0]); // ['Привет', 'мир']?>


بدون المعدّل u، ستتم معالجة السيريلية بشكل غير صحيح، لأن PHP تعتبر كل بايت حرفًا منفصلاً.



3. استبدال وتقسيم السلاسل النصية باستخدام التعبيرات المنتظمة



تسمح الدالة preg_replace() باستبدال أجزاء من السلسلة النصية وفقًا للنمط. بينما preg_split() تقسم السلسلة النصية مثل explode، ولكن مع إمكانية استخدام تعبير منتظم.



مثال 5: تنظيف النص من وسوم HTML



<?php$html = "<h1>عنوان</h1><p>نص مع كلمة <b>عريضة</b></p>";$clean = preg_replace("/<[^>]+>/", "", $html);echo $clean; //                

المدونات

توصيات الكتب