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