التعابير النمطية المتوافقة مع لغة Perl أو (PCRE)
مقدمة
تشبه صياغة الأنماط المستخدمة في هذه الدوال إلى حد كبير نفس صياغتها في لغة بيرل Perl. على سبيل المثال، يجب تضمين التعبير بين فاصلين (delimiters)، الشرطة المائلة للأمام (/) (slash). يمكن أن تكون الفواصل أي حرف ASCII غير هجائي رقمي، وليس مسافة فارغة باستثناء الشَرطة المائلة العكسية (\) (backslash) أو البايت الفارغ (null byte). إذا كان يجب استخدام الحرف الفاصل في التعبير نفسه، يجب تهريبه بواسطة الشَرطة المائلة العكسية (\).
قد يتبع فاصلُ النهاية العديدَ من المُعدِّلات (modifiers) التي تؤثر على عملية المُطابقة. راجع مُعدِّلات الأنماط.
ملاحظة: تحتفظ هذه الإضافة بذاكرة انتقالية مؤقتة عمومية لكل سلسلة من التعبيرات النمطية المترجمة (حتى 4096).
تحذير: يجب أن تكون على دراية ببعض قيود PCRE. راجع الصفحة http://www.pcre.org/pcre.txt لمزيد من المعلومات.
من الجدير بالذكر أن مكتبة PCRE هي مجموعة من الدوال التي تطابق نمط التعبير النمطي باستخدام نفس صياغة ودلالات Perl 5، فقط مع بعض الاختلافات.
الثوابت المُعرّفة مسبقًا
تُعرّف الثوابت التالية بواسطة هذه الإضافة، وستكون متاحة فقط عندما تكون الإضافة قد تُرجمت في PHP أو حُملت ديناميكيًا في وقت التشغيل.
الثابت | الوصف | الإصدار |
---|---|---|
PREG_PATTERN_ORDER
|
ترتيب النتائج بحيث تكون $matches[0]عبارة عن مصفوفة من السلاسل النصية التي قد طابقت كامل النمط، و $matches[1] عبارة عن مصفوفة من السلاسل النصية متطابقة مع النمط الفرعي الأول الموجود بين الأقواس، وهكذا. تُستخدم هذه الراية فقط مع الدالة preg_match_all() .
|
|
PREG_SET_ORDER
|
ترتيب النتائج بحيث تكون $matches[0]عبارة عن مصفوفة من أول مجموعة من المطابقات، و $matches[1] عبارة عن مصفوفة من ثاني مجموعة من المطابقات، وهكذا. تُستخدم هذه الراية فقط مع الدالة preg_match_all() .
|
|
PREG_OFFSET_CAPTURE
|
شاهد وصف PREG_SPLIT_OFFSET_CAPTURE .
|
4.3.0 |
PREG_SPLIT_NO_EMPTY
|
تُعيد الدالة preg_split() مع هذه الراية الأجزاء غير الفارغة فقط.
|
|
PREG_SPLIT_DELIM_CAPTURE
|
تلتقط الدالة preg_split() مع هذه الراية التعبيرَ الموجود بين قوسين في نمط المُحدِّد أيضًا.
|
4.0.5 |
PREG_SPLIT_OFFSET_CAPTURE
|
إذا ضُبِطت هذه الراية، فستُعاد أيضًا إزاحة السلسلة المُذيّلة لكل تواجد لمطابق. لاحظ أن هذا يغير القيم المُعادة في شكل مصفوفة، ويكون كل عنصر فيها عبارة عن مصفوفة تتكون من السلسلة النصية المطابقة عند الإزاحة 0 وسلسلتها النصية ضمن موضوع البحث عند الإزاحة 1. تستخدم هذه الراية فقط مع الدالة preg_split() .
|
4.3.0 |
PREG_UNMATCHED_AS_NULL
|
تخبر هذه الراية الدالتين preg_match() و preg_match_all() لتضمين الأنماط الفرعية غير المتطابقة في $matches بالقيم NULL . وبدون هذه الراية، يتم تمرير الأنماط الفرعية غير المتطابقة كسلاسل فارغة، كما لو كانت متطابقة فارغة. يسمح تعيين هذه الراية بالتمييز بين هاتين الحالتين.
|
7.2.0 |
PREG_NO_ERROR
|
تُعيده الدالة preg_last_error() إذا لم تكن هناك أخطاء.
|
5.2.0 |
PREG_INTERNAL_ERROR
|
تُعيده الدالة preg_last_error() إذا كان هناك خطأ PCRE داخلي.
|
5.2.0 |
PREG_BACKTRACK_LIMIT_ERROR
|
تُعيده الدالة preg_last_error() إذا استُنفِد حد التراجع (backtrack limit).
|
5.2.0 |
PREG_RECURSION_LIMIT_ERROR
|
تُعيده الدالة preg_last_error() إذا استُنفِد حد العودية (recursion limit).
|
5.2.0 |
PREG_BAD_UTF8_ERROR
|
تُعيده الدالة preg_last_error() إذا كان الخطأ الأخير بسبب بيانات UTF-8 غير صحيحة (فقط عند تشغيل تعبير نمطي في وضع UTF-8).
|
5.2.0 |
PREG_BAD_UTF8_OFFSET_ERROR
|
تُعيده الدالة preg_last_error() إذا لم تتوافق الإزاحة مع بداية نقطة رمز UTF-8 صالحة (فقط عند تشغيل تعبير نمطي في وضع UTF-8).
|
5.3.0 |
PREG_JIT_STACKLIMIT_ERROR
|
تُعيده الدالة preg_last_error() إذا فشلت آخر دالة PCRE بسبب محدودية مساحة مكدّس JIT.
|
7.0.0 |
PCRE_VERSION
|
إصدار PCRE وتاريخ إطلاقه (على سبيل المثال "7.0 18-Dec-2006"). | 5.2.4 |
أمثلة
المثال 1: أمثلة على الأنماط الصالحة
/<\/\w+>/
|(\d{3})-\d+|Sm
/^(?i)php[34]/
{^\s+(\s+)?$}
المثال 2: أمثلة على الأنماط غير الصالحة
/href='(.*)' - فاصل الانتهاء مفقود
/\w+\s*\w+/J - معدِّل غير معروف 'J'
1-\d3-\d3-\d4| - فاصل البدء المفقود