English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستخدم الدالة preg_match لتنفيذ مطابقة تعبير正ي.
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
البحث عن مطابقة بين subject والنمط المقدم كتعبير正ي.
شرح المعاملات:
$pattern: النمط الذي سيتم البحث عنه، في شكل نص.
$subject: النص المدخل.
$matches: إذا تم تقديم المعامل matches، سيتم ملؤه بالنواتج من البحث. سيكون $matches[0] يحتوي على النص المطابق بالكامل، $matches[1] سيكون يحتوي على النص المطابق لل捕获 المجموعة الأولى، وهكذا.
$flags: يمكن تعيين المعامل flags إلى القيم التالية:
PREG_OFFSET_CAPTURE: إذا تم تمرير هذا العلامة، سيتم إضافة عدد التغييرات إلى النسخة التي يتم إرجاعها عند كل ظهور، وسيكون لها علاقة بالنص المستهدف. ملاحظة: هذا سيغير التركيب إلى معامل matches، مما يجعله يتكون من عناصر تحتوي على النسخة المطابقة في العنصر الأول، وعنصر التغيير في العنصر الثاني، وهكذا.
offset: عادةً، البحث يبدأ من بداية النص المستهدف. يمكن استخدام المعامل offset لتعيين البداية من مكان معين في النص المستهدف (بونيتات البايت).
يتم إرجاع عدد مرات مطابقة النمط. سيكون هذا الرقم 0 مرة (لا تتطابق) أو 1 مرة، لأن preg_match() سيتوقف عن البحث بعد المطابقة الأولى. preg_match_all() يختلف عن ذلك، حيث سيستمر في البحث حتى نهاية النص. إذا حدث خطأ، فإن preg_match() سيعود FALSE.
<?php
// يحدد حرف "i" بعد فاصلة العلامة الموجودة في النمط البحث غير الحساس بالحالة
if (preg_match("/php/i", "PHP هو لغة البرمجة المفضلة لتصميم الويب.")) {
echo "تم العثور على النسخة المطابقة php.";
} else {
echo "لم يتم العثور على النسخة المطابقة php.";
}
?>
النتائج التشغيلية كما يلي:
تم العثور على النسخة المطابقة php.
<?php
/* البارئمة الموجودة في النمط يحدد الحد الفاصل بين الكلمات، لذا سيتم مطابقة الكلمة المستقلة "web" فقط، وليس الكلمة مع الأخرى
* جزء من الكلمة مثل "webbing" أو "cobweb" */
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
echo "تم العثور على نص ملائم.\n";
} else {
echo "لم يتم العثور على نص ملائم.\n";
}
if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
echo "تم العثور على نص ملائم.\n";
} else {
echo "لم يتم العثور على نص ملائم.\n";
}
?>
النتائج التشغيلية كما يلي:
تم العثور على نص ملائم. لم يتم العثور على نص ملائم.
<?php
// 从URL中获取主机名称
preg_match('@^(?:http://)?([^/]+)@i',
"http://ar.oldtoolbag.com/index.html", $matches);
$host = $matches[1];
// 获取主机名称的后面两部分
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "اسم النطاق هو: {$matches[0]}\n";
?>
النتائج التشغيلية كما يلي:
اسم النطاق هو: oldtoolbag.com
<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* 下面例子在php 5.2.2(pcre 7.0)或更新版本下工作, 然而, 为了后向兼容, 上面的方式是推荐写法. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>
النتائج التشغيلية كما يلي:
مجموعة ( [0] => foobar: 2008 [name] => foobar [1] => foobar [digit] => 2008 [2] => 2008 )