PHP preg_match(): التعبيرات العادية (Regex)
⚡ ملخص ذكي
تُعدّ التعابير النمطية في لغة PHP أدوات لمطابقة الأنماط، حيث تُستخدم للتحقق من صحة النصوص وتقسيمها واستبدالها ضمن تعبير واحد. يشرح هذا الدليل الوظائف الأساسية preg_match و preg_split و preg_replace، ويوضح الأحرف الخاصة الشائعة، ويُقدّم نموذجًا عمليًا للتحقق من صحة البريد الإلكتروني خطوة بخطوة.

ما هو التعبير النمطي في لغة PHP؟
التعبيرات النمطية في لغة PHPتُعدّ التعابير النمطية، أو ما يُعرف أيضًا بالتعبيرات النمطية (regex)، أداةً قويةً لمطابقة الأنماط، ويمكن تنفيذها باستخدام تعبير واحد. تستخدم هذه التعابير أحرفًا خاصة مثل + و- و^ لإنشاء تعابير معقدة. ويمكنها مساعدتك في إنجاز مهام مثل التحقق من صحة عناوين البريد الإلكتروني وعناوين IP وغيرها.
لماذا استخدام التعبيرات العادية
- تُسهّل التعابير النمطية في لغة PHP عملية تحديد الأنماط في البيانات النصية من خلال استدعاء دالة واحدة، مما يوفر علينا وقت البرمجة.
- عند التحقق من صحة مدخلات المستخدم مثل عناوين البريد الإلكتروني وأسماء النطاقات وأرقام الهواتف وعناوين IP
- تسليط الضوء على الكلمات الرئيسية في نتائج البحث
- عند إنشاء قالب HTML مخصص. يمكن استخدام Regex في PHP لتحديد علامات القالب واستبدالها بالبيانات الفعلية.
وظائف التعبير العادي المضمنة في PHP
تحتوي لغة PHP على دوال مدمجة تُمكّننا من التعامل مع التعابير النمطية، والتي سنتعلمها في هذا الدرس. دعونا نلقي نظرة على دوال التعابير النمطية الأكثر استخدامًا في PHP.
- دالة preg_match() في لغة PHP تُستخدم لمطابقة الأنماط في السلاسل النصية. تُرجع هذه الدالة القيمة true في حال العثور على تطابق، والقيمة false في حال عدم العثور على تطابق.
- preg_split() في PHP - تُستخدم هذه الدالة لإجراء مطابقة نمط على سلسلة نصية ثم تقسيم النتائج إلى مصفوفة رقمية.
- preg_replace() في PHP - تُستخدم هذه الوظيفة لإجراء مطابقة نمط على سلسلة ثم استبدال المطابقة بالنص المحدد.
فيما يلي صيغة دالة التعبير النمطي مثل preg_match() أو preg_split() أو preg_replace().
<?php
function_name('/pattern/',subject);
?>
هنا،
- "function_name(…)" إما preg_match() أو preg_split() أو preg_replace().
- تشير علامات الشرطة المائلة "/.../" إلى بداية ونهاية التعبير النمطي الخاص بنا
- النمط "/pattern/" هو النمط الذي نحتاج إلى مطابقته
- "الموضوع" هو السلسلة النصية المراد مطابقتها
دعونا الآن نلقي نظرة على أمثلة عملية تُنفذ وظائف التعبير النمطي PHP المذكورة أعلاه.
Preg_match() في PHP
يستخدم المثال الأول الدالة preg_match() لإجراء مطابقة نمط بسيطة لكلمة "guru" في مجموعة معينة URL.
يوضح الكود أدناه كيفية تنفيذ دالة preg_match() للمثال أعلاه.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
استعرض للوصول إلى URL http://localhost/phptuts/preg_match_simple.php
دعونا نفحص جزء الكود المسؤول عن مخرجاتنا، preg_match('/guru/', $my_url). هنا،
- "preg_match(...)" هي وظيفة PHP regex
- "'/guru/'" هو نمط التعبير العادي المطلوب مطابقته
- "$my_url" هو المتغير الذي يحتوي على النص المراد مطابقته.
PHP Preg_split()
لنلقِ نظرة الآن على مثال آخر يستخدم الدالة preg_split().
سوف نأخذ عبارة سلسلة ونقسمها إلى مصفوفة؛ النمط المراد مطابقته هو مسافة واحدة.
السلسلة النصية التي سيتم استخدامها في هذا المثال هي "أنا أحب التعبيرات العادية".
يوضح الكود أدناه تنفيذ المثال أعلاه.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
استعرض للوصول إلى URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
لنلق نظرة الآن على الدالة preg_replace() وظيفة PHP الذي يقوم بمطابقة النمط ثم يستبدل النمط بشيء آخر.
يبحث الكود أدناه عن كلمة guru في ملف سلسلة.
يستبدل هذا الكود كلمة "guru" بكلمة "guru" محاطة بكود CSS الذي يبرز لون الخلفية.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
بافتراض أنك قمت بحفظ الملف preg_replace.php، انتقل إلى URL http://localhost/phptuts/preg_replace.php
التعبير النمطي أحرف
استخدمت الأمثلة السابقة أنماطًا أساسية للغاية. تسمح لنا الأحرف الخاصة بإجراء عمليات مطابقة أنماط أكثر تعقيدًا، مثل اختبار صحة عنوان البريد الإلكتروني. لنلقِ نظرة الآن على الأحرف الخاصة شائعة الاستخدام.
| شخصية موموا | الوصف | مثال |
|---|---|---|
| . | يطابق أي حرف واحد باستثناء سطر جديد | /./ يطابق أي شيء يحتوي على حرف واحد |
| ^ | يطابق بداية السلسلة أو يستبعد الأحرف | /^PH/ يطابق أي سلسلة تبدأ بـ PH |
| $ | يطابق نمطًا في نهاية السلسلة | /com$/ يطابق guru99.com و yahoo.com وما إلى ذلك. |
| * | يطابق صفرًا أو أكثر من الأحرف السابقة | /com*/ يطابق الكمبيوتر والاتصالات وما إلى ذلك. |
| + | يشترط ظهور الحرف (الأحرف) السابق (السابقة) مرة واحدة على الأقل | /yah+oo/ يطابق yahoo |
| \ | تُستخدم للهروب من الأحرف الخاصة | /yahoo+\.com/ يتعامل مع النقطة كقيمة حرفية |
| [...] | فئة الشخصية | /[abc]/ يطابق a أو b أو c |
| من الألف إلى الياء | يطابق الحروف الصغيرة | /az/ يتطابق مع الأشياء الرائعة والسعيدة وما إلى ذلك. |
| Dailytrad وكالة ترجمة دولية تقدم خدمات ترجمة لأكثر من XNUMX لغة حول العالم. | يطابق الحروف الكبيرة | /AZ/ يطابق ماذا وكيف ولماذا وما إلى ذلك. |
| 0-9 | يطابق أي رقم بين 0 و 9 | /0-4/ يطابق 0,1,2,3,4 |
توفر القائمة أعلاه فقط الأحرف الأولية الأكثر استخدامًا في التعبيرات العادية.
لنلقِ نظرة الآن على مثال معقد إلى حد ما يتحقق من صحة عنوان البريد الإلكتروني.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
شرح نمط التحقق من صحة البريد الإلكتروني
هنا،
- يبدأ وينتهي التعبير النمطي بـ "/.../".
- يطابق الرمز "^[a-zA-Z0-9._-]" أي أحرف صغيرة أو كبيرة، وأرقام بين 0 و9، ونقاط، وشرطات سفلية، أو شرطات.
- "+@[a-zA-Z0-9-]" يطابق الرمز @ متبوعًا بأحرف صغيرة أو كبيرة، أو أرقام بين 0 و9، أو شرطات.
- "+\.[a-zA-Z.]{2,5}$/" يقوم بإلغاء النقطة باستخدام الشرطة المائلة العكسية، ثم يطابق أي أحرف صغيرة أو كبيرة بطول حرف يتراوح بين 2 و 5 في نهاية السلسلة.
استعرض للوصول إلى URL http://localhost/phptuts/preg_match.php
كما ترون من التحليل أعلاه، فإن الأحرف الخاصة قوية للغاية عندما يتعلق الأمر بمطابقة الأنماط.




