Можете популярно объяснить чем отличается Preg_match_all от preg_match
В интернете есть описание , но я ничего не пойму из того что там написано. Слова вроде русские, но ничего не понятно
ДополненОсобенно непонятно вот это:
-----------------------
"Дополнительный параметр flags может комбинировать следующие значения (необходимо понимать, что использование PREG_PATTERN_ORDER одновременно с PREG_SET_ORDER бессмысленно):
PREG_PATTERN_ORDER
Если этот флаг установлен, результат будет упорядочен следующим образом: элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски, и так далее."
-------------------------

Напишу как сам понимаю.
preg_match() ищет только первое соответствие в строке, preg_match_all() находит все. Как правильно ответил Редис Александрович, для простой проверки содержит ли строка шаблон достаточно preg_match().
Например есть строка $text = "param=1;param=2;param=3";
Нужно получить цифровые данные (1, 2, 3).
Если написать preg_match('/param=(\d+)/', $text, $matches) — в массиве $matches окажется только первый результат:
Array
(
[0] => param=1
[1] => 1
)
В первом элементе полное вхождение шаблона, во втором подмаска, т. е что обернули в круглые скобки.
Если изменить на preg_match_all получим все совпадения:
Array
(
[0] => Array
(
[0] => param=1
[1] => param=2
[2] => param=3
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
Флаг PREG_PATTERN_ORDER используется по умолчанию. Если по какой-то причине он неудобен для обработки данных можно использовать другой, например preg_match_all('/param=(\d+)/', $text, $matches, PREG_SET_ORDER) и получим:
Array
(
[0] => Array
(
[0] => param=1
[1] => 1
)
[1] => Array
(
[0] => param=2
[1] => 2
)
[2] => Array
(
[0] => param=3
[1] => 3
)
)
Ты меньше читай такие мануалы за 98 год. PHP итак неадекватный по историческим причинам, а такие документации написаны школьниками не добавять понимания
Если упростить preg_match позволяет узнать есть в строке подстрока или нет, а Preg_match_all позволит узнать конкретно места где есть совпадение.
Лично я интуитивно использую preg_match_all чтобы найти все совпадения полагая что all оно и есть all.
А если ищу ограниченное количество совпадений то preg_match