preg_match_all () هي وظيفة مضمنة في PHP تستخدم لمطابقة النمط المحدد في سلسلة. يمكنك استخدام هذه الوظيفة لإجراء مطابقات تعبير عادي واستخراج البيانات من السلاسل. يمكن أن يوفر الوقت والجهد في الحالات التي تحتاج فيها إلى البحث عن تكرارات متعددة للنمط ويستخدم على نطاق واسع في تحليل النص وتطبيقات استخراج البيانات في PHP.
بناء الجملة
ما يلي هو بناء الجملة لاستخدام preg_match_all في PHP:
preg_match_all ( نمط و مدخل و اعواد الكبريت و الأعلام و عوض )
ال preg_match_all يقبل المعلمات التالية ، ثلاثة منها إلزامية واثنتان اختياريتان:
- نمط : إنها المعلمة الإجبارية ؛ يحتوي على التعبير العادي الذي يحتاج إلى البحث.
- مدخل : الثانية هي أيضًا معلمة إلزامية ، حيث إنها السلسلة التي يتم إجراء البحث فيها.
- اعواد الكبريت : يخزن الإخراج في المصفوفة التي تحتوي على كل التطابقات.
- الأعلام : يصف كيفية هيكلة مصفوفة البحث أو المطابقات. يعدل سلوك البحث عن الوظيفة. يمكن استخدام العلامات التالية:
- عوض : هي المعلمة الاختيارية التي تحدد موضع بدء البحث.
علَم | وصف |
---|---|
PREG_PATTERN_ORDER | تحتوي المصفوفة الناتجة على جميع مطابقات المصفوفة لكل عنصر من عناصر التعبير النمطي. |
PREG_SET_ORDER | يحتوي كل عنصر من عناصر مصفوفة المطابقات على مطابقات من كل مجموعة لإحدى متطابقات السلسلة التي تم العثور عليها. |
PREG_OFFSET_CAPTURE | تقوم بإرجاع التطابقات مع مواضع إزاحة البايت المقابلة لها في سلسلة الموضوع. |
PREG_UNMATCHED_AS_NULL | سيتم الإبلاغ عن الأنماط غير المتطابقة على أنها NULL. |
مثال 1
ضع في اعتبارك المثال التالي لاستخدام preg_match_all () تعمل في PHP. في هذا الكود ، نحن نبحث عن الكلمة لينكس في السلسلة. تقوم هذه الوظيفة بإخراج عدد التطابقات التي تم العثور عليها مقابل الكلمة لينكس :
<؟ php
سلسلة $ = 'مرحبًا عشاق Linux ، مرحبًا بكم في LinuxHint!' ؛
نمط $ = '/ Linux /' ؛
مباريات $ = مجموعة مصفوفة ( ) ؛
preg_match_all ( نمط $ و سلسلة $ و مباريات $ ) ؛
print_r ( مباريات $ [ 0 ] ) ؛
؟>
مثال 2
في رمز المثال هذا ، نبحث عن الكلمة E في السلسلة. يتم استخدام الصغير i لجعل البحث غير حساس لحالة الأحرف. سيعيد جميع تكرارات السلسلة لكلمة E أو e:
<؟ phpسلسلة $ = 'مرحبا بكم في الولايات المتحدة الأمريكية.' ؛
$ patternRex = '/ E / i' ؛
$ matchFound = preg_match_all ( $ patternRex و سلسلة $ و مباريات $ ) ؛
لو ( $ matchFound ) {
صدى صوت '
'؛
print_r ( مباريات $ ) ؛
}
؟>
مثال 3
إذا كان النمط الذي تبحث عنه غير موجود في السلسلة ، ستعيد الوظيفة خطأ ، مما يشير إلى وجود خطأ. للتعامل مع هذا ، يمكنك استخدام عبارات if-else. إذا لم يتم العثور على النمط ، يمكنك طباعة رسالة باستخدام العبارة else لإبلاغ المستخدم بعدم العثور على النمط.
<؟ phpسلسلة $ = 'PHP هي لغة برمجة نصية شائعة' ؛
$ patternRex = '/يتبول/' ؛
$ matchFound = preg_match_all ( $ patternRex و سلسلة $ و مباريات $ ) ؛
لو ( $ matchFound ) {
صدى صوت '
'؛
صدى صوت 'وجد تطابق.' ؛
print_r ( مباريات $ ) ؛
} آخر {
صدى صوت 'لا يوجد تطابق.' ؛
}
؟>
ملحوظة : ال <قبل> العلامة في الكود أعلاه لتنسيق الإخراج.
الحد الأدنى
التعبيرات العادية هي أداة فعالة للبحث عن النص ومعالجته في PHP. ال preg_match_all () الوظيفة عبارة عن دالة PHP مضمنة تُستخدم لتنفيذ مطابقة تعبير عادي ضد سلسلة واسترداد جميع تكرارات النمط وإذا لم يكن النمط موجودًا ، فسيعيد القيمة false. فهم preg_match_all () ستساعد الوظيفة المستخدمين على التعامل مع البيانات النصية ومعالجتها بشكل أفضل في PHP.