preg_match_all

(PHP 4, PHP 5, PHP 7, PHP 8)

preg_match_all — Виконує глобальний пошук шаблону в рядку

Опис

preg_match_all(    string $pattern,    string $subject,    array &$matches = null,    int $flags = 0,    int $offset = 0): int|false

Шукає у рядку subject всі збіги з шаблоном patternи помещает результат в массивmatches у порядку, що визначається комбінацією прапорів flags

Після виявлення першої відповідності пошуки виконуватимуться з кінця останнього знайденого входження.

Список параметрів

pattern

Шуканий шаблон у вигляді рядка.

subject

Вхідний рядок.

matches

Масив значень, що збіглися, відсортований відповідно до параметра flags

flags

Може бути комбінацією наступних прапорів (зверніть увагу, вказувати прапор PREG_PATTERN_ORDER одночасно з прапором PREG_SET_ORDER безглуздо):

PREG_PATTERN_ORDER

Впорядковує результати так, що елемент $matches[ ] містить масив повних входжень шаблону, елемент $matches[ ] містить масив входжень першої підмаски і т.д.

Loading...

Результат виконання наведеного прикладу:

<b>Приклад: </b>, <div align=left>это тест</div>
Приклад: , это тест

Так, елемент $out[ ] містить масив рядків, які відповідають повному шаблону, а елемент $out[ ] містить масив рядків, що укладені в теги.

Якщо шаблон містить іменовані підшаблони, $matches додатково міститиме записи для ключів з іменами цих підшаблонів.

Якщо шаблон містить задубльовані іменовані підшаблони, лише найправіший підшаблон буде збережений в елементі $matches[NAME]

Loading...

Результат виконання наведеного прикладу:

Array
(
    [0] =>
    [1] => bar
)

PREG_SET_ORDER

Впорядковує результати так, що елемент $matches[ ] стає масивом із першим набором входжень, а елемент $matches[ ] - З другим набором входжень і т. д.

Loading...

Результат виконання наведеного прикладу:

<b>Приклад: </b>, Приклад:
<div align="left">это тест</div>, это тест

PREG_OFFSET_CAPTURE

Якщо передано цей прапор, для кожного знайденого підрядка також буде повернуто її позицію у вихідному рядку (в байтах). Зверніть увагу, що цей прапор змінює масив matches багатомірний, кожен елемент якого містить масив, що містить в індексі з номером знайдений підрядок, а зміщення цього підрядка у параметрі subject— в индексе

Loading...

Результат виконання наведеного прикладу:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => foobarbaz
                    [1] => 0
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => foo
                    [1] => 0
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [0] => bar
                    [1] => 3
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [0] => baz
                    [1] => 6
                )

        )

)

PREG_UNMATCHED_AS_NULL

Якщо цей прапор передано, несупадні підмаски будуть представлені значеннями null; інакше вони відображаються як порожніх рядків (string).

Якщо прапор сортування не передано, буде використано прапор за промовчанням. PREG_PATTERN_ORDER

offset

Зазвичай пошук виконується зліва направо з початку рядка. Через необов'язковий параметр offset можна вказати іншу позицію (в байтах), з якої буде розпочато пошук.

Зауваження :

Использование параметраoffset не еквівалентно заміні зіставного рядка виразом substr($subject, $offset) при виклику функції preg_match_all(), оскільки шаблон pattern може містити такі умови як ^ $или(?<=x). Приклади можна переглянути в описі функції preg_match()

Значення, що повертаються

Повертає кількість знайдених входжень шаблону (яка може бути і нулем) або **false**в случае возникновения ошибки.

Помилки

Якщо переданий шаблон регулярного виразу не компілюється в допустимий регулярний вираз, видається помилка рівня E_WARNING

список змін

ВерсияОпис
7.2.0Теперь для параметра$flags підтримується константа PREG_UNMATCHED_AS_NULL

Приклади

Приклад #1 Отримання всіх телефонних номерів із тексту.

Loading...

Приклад #2 Жадібний пошук збігів з HTML-тегами

Loading...

Результат виконання наведеного прикладу:

совпадение: <b>полужирный текст</b>
часть 1: <b>
часть 2: b
часть 3: полужирный текст
часть 4: </b>

matched: <a href=hody.md>нажми</a>
часть 1: <a href=howdy.md>
часть 2: a
часть 3: нажми
часть 4: </a>

Приклад #3 Використання іменованих підмасок

Loading...

Результат виконання наведеного прикладу:

Array
(
    [0] => Array
        (
            [0] => a: 1
            [1] => b: 2
            [2] => c: 3
        )

    [name] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [digit] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)

Дивіться також

  • Регулярні вирази PCRE
  • preg_quote() - Екранує символи у регулярних виразах
  • preg_match() - Виконує перевірку на відповідність регулярному виразу
  • preg_replace() - Виконує пошук та заміну за регулярним виразом
  • preg_split() - Розбиває рядок за регулярним виразом
  • preg_last_error() - Повертає код помилки виконання останнього регулярного вираження PCRE