PHP preg_match(): التعبيرات العادية (Regex)

ما هو التعبير العادي في PHP؟

PHP التعبير العادي تُعرف أيضًا باسم regex وهي خوارزمية قوية لمطابقة الأنماط يمكن تنفيذها في تعبير واحد. تستخدم التعبيرات العادية عوامل حسابية مثل (+،-،^) لإنشاء complex التعبيرات. يمكنهم مساعدتك في إنجاز مهام مثل التحقق من صحة البريد الإلكترونيmail العناوين وعنوان IP وما إلى ذلك.

لماذا استخدام التعبيرات العادية

  • تعمل تعبيرات PHP العادية على تبسيط تحديد الأنماط في بيانات السلسلة عن طريق استدعاء دالة واحدة. وهذا يوفر لنا وقت الترميز.
  • عند التحقق من صحة إدخال المستخدم مثل email العنوان وأسماء النطاق وأرقام الهواتف وعناوين IP،
  • تسليط الضوء على الكلمات الرئيسية في نتائج البحث
  • عند إنشاء قالب HTML مخصص. يمكن استخدام Regex في PHP لتحديد علامات القالب واستبدالها بالبيانات الفعلية.

وظائف التعبير العادي المضمنة في PHP

قامت PHP ببناء وظائف تسمح لنا بالعمل مع الوظائف العادية والتي سنتعلمها في هذا البرنامج التعليمي PHP Regular Expressions. دعونا نلقي نظرة على وظائف التعبير العادي شائعة الاستخدام في PHP.

  • preg_match() في PHP - تُستخدم هذه الوظيفة لإجراء مطابقة الأنماط في PHP على سلسلة. وترجع صحيحًا إذا تم العثور على تطابق، وخطأ إذا لم يتم العثور على تطابق.
  • preg_split() في PHP - تُستخدم هذه الوظيفة لإجراء مطابقة النمط على سلسلة ثم تقسيم النتائج إلى مصفوفة رقمية
  • preg_replace() في PHP - تُستخدم هذه الوظيفة لإجراء مطابقة نمط على سلسلة ثم استبدال المطابقة بالنص المحدد.

يوجد أدناه بناء جملة دالة التعبير العادي مثل PHP preg_match() أو PHP preg_split() أو PHP preg_replace().

<?php
function_name('/pattern/',subject);
?>

هنا،

  • "function_name(...)" هو إما PHP preg_match() أو PHP preg_split() أو PHP preg_replace().
  • "/.../" تشير الخطوط المائلة للأمام إلى بداية ونهاية وظيفة اختبار PHP regex
  • "'/pattern/'" هو النمط الذي نحتاج إلى مطابقته
  • "الموضوع" هو السلسلة النصية المراد مطابقتها

دعونا الآن نلقي نظرة على الأمثلة العملية التي تنفذ وظائف PHP regex المذكورة أعلاه.

Preg_match() في PHP

يستخدم المثال الأول وظيفة preg_match() في PHP لإجراء مطابقة نمط بسيطة لكلمة 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.

سوف نأخذ عبارة سلسلة ونقسمها إلى مصفوفة؛ النمط المراد مطابقته هو مسافة واحدة.

السلسلة النصية التي سيتم استخدامها في هذا المثال هي "أنا أحب التعبيرات العادية".

يوضح الكود أدناه تنفيذ المثال أعلاه.

<?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_split()

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

PHP Preg_replace()

الأحرف الأولية للتعبير العادي

استخدمت الأمثلة المذكورة أعلاه أنماطًا أساسية جدًا؛ تسمح لنا الأحرف الأولية ببساطة بأداء المزيد من complex يتطابق النمط مثل اختبار صلاحية email عنوان. دعونا الآن نلقي نظرة على الأحرف الأولية شائعة الاستخدام.

حرف التعريف الوصف مثال
. يطابق أي حرف واحد باستثناء سطر جديد /./ يطابق أي شيء يحتوي على حرف واحد
^ يطابق بداية أو سلسلة / يستبعد الأحرف /^PH/ يطابق أي سلسلة تبدأ بـ PH
$ يطابق النمط الموجود في نهاية السلسلة /com$/ يتطابق مع guru99.com وyahoo.com وما إلى ذلك.
* يطابق أي صفر (0) أو أكثر من الأحرف /com*/ يطابق الكمبيوتر والاتصالات وما إلى ذلك.
+ يتطلب ظهور الحرف (الأحرف) السابقة مرة واحدة على الأقل /yah+oo/ يطابق yahoo
\ تستخدم للهروب من الأحرف التعريفية /yahoo+\.com/ يتعامل مع النقطة كقيمة حرفية
[...] فئة الشخصية /[abc]/ يطابق abc
من الألف إلى الياء يطابق الحروف الصغيرة /az/ يتطابق مع الأشياء الرائعة والسعيدة وما إلى ذلك.
Dailytrad وكالة ترجمة دولية تقدم خدمات ترجمة لأكثر من XNUMX لغة حول العالم. يطابق الحروف الكبيرة /AZ/ يطابق ماذا وكيف ولماذا وما إلى ذلك.
0-9 يطابق أي رقم بين 0 و 9 /0-4/ يطابق 0,1,2,3,4

توفر القائمة أعلاه فقط الأحرف الأولية الأكثر استخدامًا في التعبيرات العادية.

دعونا الآن نلقي نظرة على كوم إلى حد ماplex المثال الذي يتحقق من صحة البريدmail عنوان.

<?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._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] "

هنا،

  • ""/.../"" يبدأ وينهي التعبير العادي
  • "^[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

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

كما ترون من المثال التفصيلي أعلاه، فإن الأحرف الأولية قوية جدًا عندما يتعلق الأمر بمطابقة الأنماط.

نبذة عامة

  • التعبير العادي أو Regex في PHP هو خوارزمية مطابقة النمط
  • تعد التعبيرات العادية مفيدة جدًا عند إجراء عمليات التحقق من الصحة وإنشاء أنظمة قوالب HTML التي تتعرف على العلامات وما إلى ذلك.
  • PHP يحتوي على وظائف مدمجة وهي PHP preg_match() و PHP preg_split() و PHP preg_replace() التي تدعم التعبيرات العادية.
  • تسمح لنا الأحرف الأولية بإنشاء complex أنماط