التعبيرات النمطية في PHP مع أمثلة: دليل شامل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعبيرات النمطية في PHP: ما هي ولماذا نحتاجها؟

\n\n

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

\n\n

في هذه المقالة، سنشرح بناء الجملة الأساسي للتعبيرات النمطية في PHP، ونستعرض الدوال الرئيسية، ونقدم أمثلة واضحة لكل منها.

\n\n

1. أساسيات بناء جملة التعبيرات النمطية

\n\n

التعبير النمطي في PHP هو سلسلة نصية محاطة بمحددات (غالبًا ما تكون شرطة مائلة /). داخل هذه السلسلة توجد رموز خاصة (رموز وصفية) ورموز عادية.

\n\n

الرموز الوصفية الأساسية

\n\n
    \n
  • . — أي حرف، باستثناء سطر جديد.
  • \n
  • ^ — بداية السلسلة.
  • \n
  • $ — نهاية السلسلة.
  • \n
  • * — صفر أو أكثر من تكرارات الحرف السابق.
  • \n
  • + — تكرار واحد أو أكثر.
  • \n
  • ? — صفر أو تكرار واحد.
  • \n
  • \\d — أي رقم (مكافئ لـ [0-9]).
  • \n
  • \\w — أي حرف أو رقم أو شرطة سفلية.
  • \n
  • \\s — أي حرف مسافة بيضاء.
  • \n
  • [] — فئة من الأحرف (مثل [a-z] — جميع الأحرف اللاتينية الصغيرة).
  • \n
  • () — تجميع.
  • \n
\n\n

مثال على نمط بسيط

\n\n

لنفترض أننا نريد التحقق مما إذا كانت السلسلة تحتوي على كلمة "php". سيكون أبسط نمط كالتالي:

\n\n
/php/
\n\n

سيبحث هذا النمط عن السلسلة الفرعية "php" في أي مكان في السلسلة (على سبيل المثال، لن يجدها في "PHP" لأن حالة الأحرف مهمة). لجعل البحث غير حساس لحالة الأحرف، نستخدم المعدل i:

\n\n
/php/i
\n\n

الآن سيتطابق النمط مع "PHP" و"Php" و"php".

\n\n

2. الدوال الرئيسية للعمل مع التعبيرات النمطية في PHP

\n\n

توفر PHP عدة دوال رئيسية. سننظر في الثلاثة الأكثر شيوعًا: preg_match وpreg_replace وpreg_split.

\n\n

2.1. preg_match — التحقق من التطابق

\n\n

تتحقق الدالة preg_match مما إذا كانت السلسلة تتطابق مع النمط. ترجع 1 إذا تم العثور على تطابق، و0 في الحالة المعاكسة. يمكن أيضًا تمرير وسيطة ثالثة — مصفوفة يتم فيها تخزين جميع التطابقات التي تم العثور عليها.

\n\n

مثال: التحقق من البريد الإلكتروني

\n\n
<?php\n$email = "user@example.com";\n$pattern = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/";\n\nif (preg_match($pattern, $email)) {\n    echo "البريد الإلكتروني صحيح!";\n} else {\n    echo "البريد الإلكتروني غير صحيح!";\n}\n?>
\n\n

شرح النمط:

\n
    \n
  • ^ — بداية السلسلة.
  • \n
  • [a-zA-Z0-9._-]+ — حرف واحد أو أكثر: أحرف لاتينية، أرقام، نقطة، شرطة سفلية أو شرطة.
  • \n
  • @ — الرمز "@" الإجباري.
  • \n
  • [a-zA-Z0-9.-]+ — اسم النطاق.
  • \n
  • \\. — نقطة هاربة.
  • \n
  • [a-zA-Z]{2,} — نطاق المستوى الأعلى (حرفان على الأقل).
  • \n
  • $ — نهاية السلسلة.
  • \n
\n\n

2.2. preg_replace — الاستبدال وفقًا لنمط

\n\n

تبحث الدالة preg_replace عن التطابقات مع النمط وتستبدلها بسلسلة محددة. هذا مفيد بشكل خاص لتنظيف البيانات أو تنسيق النص.

\n\n

مثال: إزالة جميع الأرقام من سلسلة

\n\n
<?php\n$text = "رقمي: 123-456-7890";\n$pattern = "/\\d+/";\n$replacement = "[أرقام]";\n\n$result = preg_replace($pattern, $replacement, $text);\necho $result; // سيطبع: "رقمي: [أرقام]-[أرقام]-[أرقام]"\n?>                

المدونات

توصيات الكتب