English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل PHP الأساسي

دليل PHP المتقدم

PHP & MySQL

دليل PHP

استخدام دالة PHP preg_match_all() مع أمثلة

PHP تعبيرات النص العشوائي (PCRE)

يستخدم الدالة preg_match_all لتنفيذ تطابق النمط العشوائي الكامل.

النحو

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

يبحث في جميع التطابقات للنمط pattern المحدد في subject ويقوم بإخراجها في ترتيب معين معين عبر المعامل flag.

بعد العثور على التطابق الأول، يستمر التسلسل في البحث من موقع التطابق الأخير.

شرح المعاملات:

  • $pattern: النمط الذي يتم البحث عنه، في شكل نصي.

  • $subject: النص المدخل.

  • $matches: مصفوفة متعددة الأبعاد، تُستخدم كمعامل خروجي لتقديم جميع النتائج المطابقة، يتم ترتيب المصفوفة عبر المعامل flags.

  • $flags: يمكن دمجها مع الرموز أدناه (تلاحظ أن لا يمكن استخدام PREG_PATTERN_ORDER و PREG_SET_ORDER في نفس الوقت):

  • PREG_PATTERN_ORDER: يترتيب النتائج كـ $matches[0] يحتوي على جميع التطابقات للنمط الكامل، $matches[1] يحتوي على جميع التطابقات للمجموعة الفرعية الأولى وما إلى ذلك.

  • PREG_SET_ORDER: يترتيب النتائج كـ $matches[0] يحتوي على جميع التطابقات التي تم العثور عليها في المرة الأولى (بما في ذلك المجموعات الفرعية)، $matches[1] هو مجموعة تحتوي على جميع التطابقات التي تم العثور عليها في المرة الثانية (بما في ذلك المجموعات الفرعية) وما إلى ذلك.

  • PREG_OFFSET_CAPTURE: إذا تم تقديم هذا الرمز، يتم增加 حجم التموضع النسبي للكل من التطابقات المكتشفة عند العودة.

  • offset: عادةً، تبدأ البحث من بداية النص المستهدف. يمكن استخدام المعامل option offset للبدء في البحث من موقع معين في النص المستهدف (وحدة هي البايت).

القيمة المعدة

يعود عدد التطابق الكامل (قد يكون 0) أو إذا حدث خطأ يعود FALSE.

مثال على الإنترنت

<?php
$userinfo = "اسم: <b>PHP</b> <br> العنوان: <b>لغة البرمجة</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>

النتيجة التنفيذية كما يلي:

مجموعة
(
    [0] => <b>PHP</b>
    [1] => <b>لغة البرمجة</b>
)
<?php
//\\2 هو مثال على الإشارة المتجهة إلى الخلف. هذا يخبر pcre أنه يجب عليه تطابق الثاني (هنا هو ([\w]+))
//النتيجة الم匹配ة. يستخدم هنا رأسين لاستخدام الأسلوب المزدوج لأنه تم استخدام العلامات المزدوجة.
$html = "<b>نص غامق</b><a href=howdy.html>انقر هنا</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
    echo "المطابقة: " . $val[0] . "\n";
    echo "جزء 1: " . $val[1] . "\n";
    echo "جزء 2: " . $val[2] . "\n";
    echo "جزء 3: " . $val[3] . "\n";
    echo "جزء 4: " . $val[4] . "\n\n";
}
?>

النتيجة التنفيذية كما يلي:

المطابقة: <b>نص غامق</b>
جزء 1: <b>
جزء 2: b
جزء 3: نص غامق
جزء 4: </b>
المطابقة: <a href=howdy.html>انقر هنا</a>
جزء 1: <a href=howdy.html>
جزء 2: a
جزء 3: انقر هنا
جزء 4: </a>

PHP تعبيرات النص العشوائي (PCRE)