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, в массиве matches.

После нахождения первого совпадения подfolge продолжается от последнего места совпадения.

Описание параметров:

  • $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: Обычно, поиск начинается с начала целевой строки. Опциональный параметр offset используется для поиска с указанного места в целевой строке (единица измерения - байты).

Возвратное значение

Возврат полного числа совпадений (возможно, 0), или FALSE, если произошла ошибка.

Онлайн пример

<?php
$userinfo = "Name: <b>PHP</b> <br> Title: <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]+)).
//Мatching results. Два обратных слэша используются здесь, потому что здесь используются двойные кавычки.
$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)