🐘 شرح PHP

التعابير النمطية (RegEx)

دوال preg

PHP يستخدم تعابير PCRE النمطية عبر دوال preg_. النمط يوضع بين فاصلين (غالبًا /):

<?php
var_dump(preg_match("/php/i", "أتعلّم PHP"));   // 1 (وُجد، i = تجاهل الحالة)
?>

preg_match تُرجع 1 عند المطابقة و0 عند عدمها.

استخراج المطابقات

<?php
$text = "السنة 2026";
preg_match("/\d+/", $text, $matches);
echo $matches[0];   // 2026
?>

كل المطابقات

<?php
preg_match_all("/\d+/", "3 تفاحات و5 موزات", $matches);
print_r($matches[0]);   // [3, 5]
?>

الاستبدال

<?php
echo preg_replace("/\d+/", "#", "الهاتف 0791234567");
// الهاتف #
?>

رموز الأنماط الشائعة

الرمزيطابق
\dرقم
\wحرف أو رقم
\sمسافة
+واحد أو أكثر
*صفر أو أكثر
^بداية النص
$نهاية النص

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

<?php
function isValidEmail(string $email): bool {
    return preg_match("/^[\w.]+@[\w]+\.[\w]+$/", $email) === 1;
}

var_dump(isValidEmail("ali@mail.com"));   // true
var_dump(isValidEmail("ali@mail"));       // false
?>

💡 للبريد والروابط، PHP يوفّر بديلًا أبسط وأدقّ: filter_var($email, FILTER_VALIDATE_EMAIL) — سنراه في درس المرشّحات.

أخطاء شائعة

  • نسيان الفاصلين المحيطين بالنمط (/.../).
  • نسيان تهريب الرموز الخاصّة (مثل . التي تطابق أي محرف).

🎯 التالي: معالجة النماذج والتحقّق منها.