preg_match_all
funkcja
Wyszukuje wszystkie dopasowania wyrażenia regularnego w ciągu. Zwraca liczbę dopasowań i wypełnia tablicę $matches wszystkimi wynikami.
preg_match_all(string $pattern, string $subject, array &$matches = null, int $flags = PREG_PATTERN_ORDER, int $offset = 0): int|false
preg_match_all przeszukuje cały ciąg $subject i zbiera wszystkie fragmenty pasujące do wzorca $pattern — w odróżnieniu od preg_match, które zatrzymuje się po pierwszym trafieniu. Funkcja zwraca liczbę znalezionych dopasowań (lub false przy błędzie wzorca) i jednocześnie wypełnia tablicę $matches. Przy domyślnej fladze PREG_PATTERN_ORDER w $matches[0] znajdziesz tablicę pełnych dopasowań, a w $matches[1], $matches[2] itd. — grupy z nawiasów.
Typowe zastosowania to wyciąganie liczb z tekstu, wyszukiwanie adresów e-mail czy parsowanie prostych szablonów. Pamiętaj, że wynik false różni się od 0 — zawsze porównuj przez === false, jeśli sprawdzasz błąd.
<?php
declare(strict_types=1);
$n = preg_match_all('/\d+/', 'cena: 15 zł, rabat: 3 zł', $m);
echo $n; // wynik: 2
print_r($m[0]);
// wynik:
// Array
// (
// [0] => 15
// [1] => 3
// )