تصميم موقع الويب الخاص بك مع PHP و MySQL


الدرس: تذكير التعبيرات المُنتظمة


الصفحة السابقة
سيكون هذا الملحق مفيدًا لأولئك الذين قرأوا الفصلين على التعبيرات المُنتظمة. إنه تذكير ، بمعنى أنه سيكون ملخصًا مفيدًا عند كتابة regex الخاص بك.
ارجع إلى هذا الملحق بمجرد أن تكون على وشك كتابة تعبيرا مُنتظم. سيكون بمثابة دعم لتذكيرك بكل إمكانيات regex .
هذا الملحق ليس مخصصًا لتعلم كيفية استخدام regexes . إذا كنت تريد أن تتعلم ، راجع الفصول المقابلة في هذه الدورة.
هنا ، التفسيرات مقتضبة لأن الهدف هو تجميع أكبر قدر ممكن من الأشياء التي يمكن معرفتها حول regex .

هيكل regex


يحيط regex برموز تسمى المحددات. يمكننا اختيار ما نريد ؛ نحن نستخدم # .
regex لديهاالشكل التالي:
#Regex#Options .
لاختبار سلسلة من regex ، نستخدم preg_match  :

<?php
preg_match("regex","chaine"); 
?>
يقدم الجدول التالي الاستخدام الأساسي لـ regex .
Regex تفسير
#guitare# ابحث عن كلمة " guitare " في السلسلة.
#guitare|piano# ابحث عن كلمة " guitare " أو ""piano .
#^guitare# يجب أن تبدأ السلسلة بـ " "guitare .
#guitare$# يجب أن تنتهي السلسلة بـ " "guitare .
#^guitare$# يجب أن تحتوي السلسلة فقط على " "guitare .

فئات الاحرف


يعرض الجدول أدناه الإرشادات الخاصة باستخدام فئات الأحرف.
Regex تفسير
#gr[ioa]s# سلسلة تحتوي على "gris" أو "gros" أو ""gras .
[a-z] أحرف صغيرة من a إلى z .
[0-9] الأرقام من 0 إلى 9.
[a-e0-9] رسائل من "a" إلى "e" أو أرقام من 0 إلى 9.
[0-57A-Za-z.-] الأرقام من 0 إلى 5 أو 7 أو أحرف كبيرة أو أحرف صغيرة أو فترة أو شرطة.
#[^0-9]# سلسلة تحتوي على أرقام.
#^[^0-9]# سلسلة لا تبدأ برقم.

محددو الكميات


يعرض الجدول أدناه الكميات المختلفة الموجودة.
Regex تفسير
#a?# يمكن أن تظهر "a" 0 أو 1 مرة.
#a+# يجب أن يظهر "a" مرة واحدة على الأقل.
#a*# يمكن أن تظهر "a" مرات 0 أو 1 أو أكثر.
#bor?is# "bois" أو "boris" .
#Ay(ay|oy)*# يعمل من أجل Ay و Ayay و Ayoy و Ayayayoyayayoyayoyoyoy ، إلخ.
#a{3}# يجب أن يظهر "a" 3 مرات بالضبط ("aaa") .
#a{3,5}# يجب أن يظهر "a" 3 إلى 5 مرات ( "aaa" ، "aaaa" ، "aaaaa") .
#a{3,}# يجب أن يظهر "a" 3 مرات على الأقل ( "aaa" ، "aaaa" ، "aaaaa" ، "aaaaaa" ، إلخ) .
الحروف الأولية هي:
# ! ^ $ ( ) [ ] { } | ? + * .
لاستخدام metacharacter في البحث، يجب الهروب منه بخط مائل: \.
Regex تفسير
#Hein?# ابحث عن "Hei" أو "Hein" .
#Hein\?# ابحث عن " "Hein?
لا يلزم أن يتم الهروب من الحروف الأولية في الفصل الدراسي ، باستثناء "  # " (نهاية  رمز regex ) و " ]  " (نهاية رمز الفئة) و ​​"\" ( إذا كان الفصل الدراسي يبحث عن خط مائل عكسي ) يجب أن يسبقه خط مائل عكسي.
إذا كنت ترغب في البحث عن واصلة في فئة حرف، وينبغي وضعها في بداية أو نهاية الصف [a-zA-Z0-9-] .

فصول مختصرة


يتم دعم الفئات المختصرة فقط من قبل PCRE regexes PCRE.
فئة مختصرة موافق
\d [0-9]
\D [^0-9]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t تبويب
\n كسر خط
\r الرجوع الى السطر
\s مساحة بيضاء (تتوافق مع \ t \ n \ r)
\S ليست مساحة بيضاء (\ t \ n \ r)
. Universal class
النقطة هي فئة عالمية: تعني "أي حرف او رمز" .

التقاط واستبدال


باستخدام الوظيفة ، preg_replace يمكنك عمل بدائل تلقائيًا باستخدام regex .

<?php
$texte = preg_replace('#\[b\](.+)\[/b\]#i', '$1', $texte);
?>
  • الأقواس المستخدمة لإحاطة واحدة من نهاية التعابير المنطقية لخلق المتغيرات $1، $2، $3الخ والتي ستكون مفيدة للاستبدال.
  • يمكن أن يكون هناك ما يصل إلى 99 قواسا مُنتظما ، وهكذا $99 .
  • (?:texte)هو قوس غير جذاب: إنه لا ينشئ متغيرًا.
  • $0 يتم إنشاء المتغير دائمًا ويتوافق مع كامل regex .
وبالتالي ، فإن regex التالي ...
#(anti)co(?:nsti)(tu(tion)nelle)ment#
... ينشئ المتغيرات التالية:
  •  : $0  anticonstitutionnellement
  • :$1  anti  
  • $2  tutionnelle: 
  • :$3  tion

الخيارات


هناك العديد من الخيارات التي يمكن استخدامها مع PCRE regexes .
من بين الثلاثة التي نستخدمها في الغالب ، هناك:
  • i   : لن يعد regex يفرق بين الحروف الكبيرة / الصغيرة ؛
  • s   : النقطة (فئة عالمية) ستعمل أيضًا على فواصل الأسطر ( \n) ؛
  • U   : وضع " Ungreedy " (وليس الجشع). تستخدم لجعلregex تتوقف في أقرب وقت ممكن. عملي على سبيل المثال لـ bbCode [b][/b]  : ستتوقف regex عند وجود أول مرة [/b] .