المطابقة باستخدام preg_match
اختبروا السلاسل النصية مقابل الأنماط والتقطوا المجموعات
المطابقة باستخدام preg_match درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
توقيع preg_match()
تعيد preg_match($pattern, $subject, &$matches) القيمة 1 إذا طابق النمط، و0 إذا لم يطابق، أو false عند حدوث خطأ.
اختبار مطابقة بسيط
استخدم preg_match كاختبار منطقي — فالقيمة المرجعة 1 تعني العثور على تطابق.
<?php
$email = "user@example.com";
if (preg_match('/\w+@\w+\.\w+/', $email)) {
echo "Looks like an email";
}مجموعات الالتقاط باستخدام $matches
تمثل $matches[0] المطابقة الكاملة، بينما تمثل $matches[1] و$matches[2]... مجموعات الالتقاط.
<?php
preg_match('/^(\w+)\s(\w+)$/', "John Smith", $m);
echo $m[1]; // "John"
echo $m[2]; // "Smith"عمليات الالتقاط المسمّاة
استخدم (?P<name>...) لمجموعات الالتقاط المسمّاة، ويمكن الوصول إليها باستخدام $matches["name"].
<?php
preg_match('/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
'2025-06-15', $m);
echo $m['year']; // 2025معلمة الإزاحة
تحدّد المعلمة الرابعة موضع بدء المطابقة داخل السلسلة، وهي إزاحة بالبايت.
<?php
preg_match('/\d+/', 'abc123def456', $m, 0, 3);
echo $m[0]; // "123"PREG_OFFSET_CAPTURE
احصل على كل من قيمة المطابقة وإزاحتها بالبايت.
<?php
preg_match('/\d+/', "price: 42 USD", $m, PREG_OFFSET_CAPTURE);
echo $m[0][0]; // "42"
echo $m[0][1]; // 7 (byte offset)preg_match_all()
تبحث preg_match_all() عن جميع المطابقات وتعيد عددها.
<?php
$html = '<a href="a.com">A</a> <a href="b.com">B</a>';
preg_match_all('/<a href="([^"]+)">/', $html, $m);
print_r($m[1]); // ["a.com", "b.com"]مثال على التحقّق من البريد الإلكتروني
تعبير نمطي عملي للبريد الإلكتروني:
<?php
function isEmail(string $s): bool {
return (bool) preg_match(
'/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/',
$s
);
}التحقّق من رقم الهاتف
تحقّق من أرقام الهواتف الدولية:
<?php
preg_match('/^\+?[1-9]\d{7,14}$/', '+1234567890', $m);معالجة الأخطاء
إذا كان النمط غير صالح، تعيد preg_match() القيمة false. تحقّق باستخدام === false، واستخدم preg_last_error() لمعرفة التفاصيل.
نصيحة لتحسين الأداء
تخزّن PHP أنماط PCRE المصرّفة مؤقتًا داخليًا، لذا لا تحتاج إلى خطوات إضافية عند استخدام التعبير النمطي نفسه داخل حلقة.
متى لا تستخدم التعبيرات النمطية
للبيانات المنظّمة، توفر PHP دوال مخصّصة: filter_var(FILTER_VALIDATE_EMAIL) وparse_url() — ففضّل استخدامها على كتابة تعبير نمطي يدوي.
تحقّق سريعًا
ماذا تحتوي $matches[0] بعد preg_match؟
الأسئلة الشائعة
هل درس «المطابقة باستخدام preg_match» مجاني؟
نعم — نص درس «المطابقة باستخدام preg_match» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «المطابقة باستخدام preg_match»؟
اختبروا السلاسل النصية مقابل الأنماط والتقطوا المجموعات تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المطابقة باستخدام preg_match»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات بنية Regex
- المطابقة باستخدام preg_match
- استبدال النص باستخدام preg_replace
- التقسيم والأنماط العملية