Referência da função preg_match_all
Uma referência prática da função preg match all
$resultado = preg_match_all($pattern, $subject, $matches, $flags, $offset);
Explicando…
A função preg_match_all()
relaciona todas as ocorrências ($matches
) de um padrão ($pattern
) em uma string ($subject
).
A ordem do array resultado ($matches
) é influenciado pelo 4º parâmetro ($flags
).
O 5º parâmetro ($offset
) indica em que posição, na string de pesquisa ($subject
), a pesquisa deve iniciar.
Fonte: Gilmore (Dominando PHP e MYSQL, pag. 164)
Protótipo da função
int preg_match_all (
string $pattern,
string $subject
[, array &$matches
[, int $flags = PREG_PATTERN_ORDER
[, int $offset = 0 ]]]
)
Parâmetros
pattern |
A expressão regular propriamente dita. String de padrão de procura. |
---|---|
subject |
Texto que será vasculhado por nossa expresão regular. String de entrada. |
matches (opcional) |
Array multidimensional ordenado de acordo com o 4º parâmetro (`$flags`) O que nossa expressão regular encontrou. |
flags (opcional) |
Define a ordem do array resultado (`$matches`), pode ser: `PREG_PATTERN_ORDER` ou `PREG_SET_ORDER`. Quando omitido, o valor pardão é `PREG_PATTERN_ORDER`. |
offset (opcional) |
Indica em que posição, na string de pesquisa (`$subject`), a pesquisa deve iniciar. |
Mais sobre o quarto parâmetro (flags)
Quando a flag é PREG_PATTERN_ORDER
temos o seguinte quadro:
$matches[0]
será um array com todas as ocorrências.
$matches[1]
será um array com todas as ocorrências que combina com a primeira expressão em parênteses.
Exemplo:
<?php
$pattern = "|<[^>]+>(.*)]+>|U";
$subject = "<b>example: </b><div align=left>this is a test</div>";
preg_match_all($pattern, $subject, $matches, PREG_PATTERN_ORDER);
var_dump($matches);
Quando a flag é PREG_SET_ORDER
temos o seguinte quadro:
$matches[0]
será um array com elementos realcionados pela primeira expressão regular entre parênteses.
$matches[1]
será um array com elementos relacionados pela segunda expressão regular entre parênteses.
<?php
$pattern = "|<[^>]+>(.*)]+>|U";
$subject = "<b>example: </b><div align=left>this is a test</div>";
preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);
var_dump($matches);
Fonte