logo

وظيفة PHP preg_match()

الدالة preg_match() هي دالة مضمنة في PHP تقوم بإجراء مطابقة التعبير العادي. تبحث هذه الدالة في السلسلة عن النمط، وترجع صحيحًا إذا كان النمط موجودًا، وإلا فإنها ترجع خطأ.

بشكل عام، يبدأ البحث من بداية معلمة السلسلة $subject. يتم استخدام المعلمة الاختيارية $offset لبدء البحث من الموضع المحدد.

بناء الجملة

 int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset) 

ملاحظة: $offset هو معلمة اختيارية تحدد الموضع الذي يبدأ منه البحث.

حدود

تقبل هذه الوظيفة خمس معلمات، وهي موضحة أدناه:

نمط

إنها معلمة نوع السلسلة. تحتفظ هذه المعلمة بالنمط المطلوب البحث فيه كسلسلة.

موضوع

تحتوي هذه المعلمة على سلسلة الإدخال التي نبحث فيها عن النمط.

اعواد الكبريت

إذا تم توفير معلمة التطابقات، فسوف تحتوي على نتائج البحث.

مباريات[0] - سيحتوي على النص المطابق للنمط الكامل.

مباريات[1] - سيحتوي على النص المطابق للنمط الفرعي الأول بين قوسين، وهكذا.

أعلام

مثال فئة جافا

يمكن أن تحتوي الأعلام على الأعلام التالية الواردة أدناه:

    PREG_OFFSET_CAPTURE:إذا تم تمرير هذه العلامة في الدالة preg_match()، فسيتم أيضًا إرجاع إزاحة السلسلة الملحقة لكل تطابق يحدث.PREG_UNMATCHED_AS_NULL:إذا تم تمرير هذه العلامة في الدالة preg_match()‎، فسيتم الإبلاغ عن النمط الفرعي غير المتطابق على أنه NULL، وإلا فسيتم الإبلاغ عنه كسلسلة فارغة.

عوض

افتراضيًا، يبدأ البحث من بداية المعلمة $subject. يتم استخدام معلمة الإزاحة لتحديد المكان الذي سيبدأ فيه البحث. إنها معلمة اختيارية.

نوع الإرجاع

ترجع الدالة preg_match()‎ صحيحًا إذا كان النمط مطابقًا بخلاف ذلك، فإنها تُرجع خطأ.

ملاحظة: إذا كنت تريد فقط التحقق مما إذا كانت هناك سلسلة واحدة موجودة في سلسلة أخرى، فلا تستخدم الدالة preg_match() . استخدم الدالة strpos() لأنها ستكون أسرع.

أمثلة

 <?php //initialize a variable of string type $site = 'javatpoint'; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?> 

انتاج:

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

يمكننا أن نرى الإخراج أعلاه كما هو موضح أدناه لفهمه بشكل أفضل.

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

أمثلة: بحث حساس لحالة الأحرف

 <?php //initialize a variable of string type $website = 'JTP is a best online platform to learn.'; //case insensitive search for word jtp //The 'i' after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo 'Pattern matched in string.</br>&apos;; print_r($matches); } else { echo &apos;Pattern not matched in string.&apos;; } ?&gt; 

انتاج:

 Pattern matched in string. Array ( [0] =&gt; JTP ) 

أمثلة: باستخدام حد الكلمة ()

حرف إلى سلسلة في جافا
 <?php /* The  indicates the word boundary in the pattern. So, it matches only the distinct word like 'web', and words like 'coreweb' or ' webinar' do not match partially.*/ if (preg_match('/web/i', 'PHP is a web scripting language.')) { echo 'A match was found. </br>&apos;; } else { echo &apos;A match was not found. <br>&apos;; } if (preg_match(&apos;/web/i&apos;, &apos;PHP is a website scripting language.&apos;)) { echo &apos;A match was found.&apos;; } else { echo &apos;A match was not found.&apos;; } ?&gt; 

انتاج:

 A match was found. A match was not found. 

أمثلة: احصل على اسم المجال من عنوان URL

 

انتاج:

 Domain name is: javatpoint.com 

بناء جملة Regex (التعبير العادي).

[اي بي سي] يطابق حرفًا واحدًا - a أو b أو c
[^ايه بي سي] يطابق أي حرف مفرد باستثناء a أو b أو c
[أ-ي] يطابق أي حرف واحد ضمن النطاق a-z
[أ-ي-ي] أي حرف واحد ضمن النطاق a-z أو A-Z
^ بداية السطر
$ نهاية الخط
أ بداية السلسلة
مع نهاية السلسلة
. أي حرف واحد
س أي حرف مسافة بيضاء
س أي حرف غير مسافة بيضاء
د أي رقم
د أي غير الرقم
في أي حرف كلمة (حرف، رقم، الشرطة السفلية)
في أي حرف غير الكلمة
ب مدقق حدود الكلمة
/؟/ يبدأ وينتهي التعبير العادي
(؟) التقط كل ما هو محاط بين قوسين ()
(أ|ب) ا او ب
أ؟ صفر أو واحد من أ
أ* صفر أو أكثر من أ
أ+ واحد أو أكثر من أ
أ{3} بالضبط 3 من أ
أ{3،} 3 أو أكثر من أ
أ{3,6} بين 3 و 6 أ
أنا فحص غير حساس لحالة الأحرف
م جعل نقطة مطابقة الأسطر الجديدة
س تجاهل المسافة البيضاء في regex

شرح النمط '[^[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 في نهاية السلسلة.