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
// )
📘 Naucz się w lekcji →