English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

Uso e exemplo da função preg_match_all() do PHP

PHP 正则表达式(PCRE)

A função preg_match_all é usada para executar uma coincidência de expressão regular global.

Sintaxe

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

Procura todas as coincidências do padrão regular dado no subject e as exibe na ordem especificada pelo flag no matches.

Depois de encontrar a primeira coincidência, a subsequência continua a procurar a partir da posição da última coincidência.

Descrição dos parâmetros:

  • $pattern: Padrão a ser pesquisado, em formato de string.

  • $subject: String de entrada.

  • $matches: Matriz multidimensional, usada como parâmetro de saída para exibir todos os resultados de coincidência, a ordenação da matriz é especificada pelos flags.

  • $flags: Pode ser combinado com as marcas a seguir (atenção: não pode ser usado ao mesmo tempo PREG_PATTERN_ORDER e PREG_SET_ORDER):

  • PREG_PATTERN_ORDER: A ordenação dos resultados é $matches[0] que salva todas as coincidências do padrão completo, $matches[1] Salva todas as coincidências do primeiro grupo subordinado, por exemplo.

  • PREG_SET_ORDER: A ordenação dos resultados é $matches[0] que contém todas as coincidências obtidas pela primeira vez (inclusive os grupos subordinados), $matches[1É um array que contém todas as coincidências encontradas pela segunda vez (inclusive os grupos subordinados), por exemplo.

  • PREG_OFFSET_CAPTURE: Se esse marcador for passado, cada correspondência encontrada aumentará o deslocamento relativo em relação à string de destino.

  • offset: Normalmente, a busca começa a partir da posição inicial da string de destino. O parâmetro opcional offset é usado para especificar a posição de início da busca na string de destino (em bytes).

Retorno

Retorna o número total de correspondências completas (pode ser 0), ou FALSE se ocorrer um erro.

Exemplo online

<?php
$userinfo = "Nome: <b>PHP</b> <br> Título: <b>Idioma de Programação</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>

O resultado da execução está conforme abaixo:

Array
(
    [0] => <b>PHP</b>
    [1] => <b>Idioma de Programação</b>
)
<?php
//\",2É um exemplo de referência posterior. Isso diz ao pcre que ele deve corresponder ao segundo parênteses de expressão regular (aqui é ([\w+))
//Os resultados correspondentes. Aqui são usados dois backslashes porque estão sendo usadas aspas duplas.
$html = "<b>texto em negrito</b><a href=howdy.html>clique aqui</a>";
preg_match_all("/(<([\w+)[^>]*)>(.*/\",2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
    echo "matched: " . $val[0] . "\n";
    echo "part 1: " . $val[1] . "\n";
    echo "part 2: " . $val[2] . "\n";
    echo "part 3: " . $val[3] . "\n";
    echo "part 4: " . $val[4]; "\n\n";
}
?>

O resultado da execução está conforme abaixo:

matched: <b>texto em negrito</b>
part 1: <b>
part 2: b
part 3: texto em negrito
part 4: </b>
matched: <a href=howdy.html>clique aqui</a>
part 1: <a href=howdy.html>
part 2: a
part 3: clique aqui
part 4: </a>

PHP 正则表达式(PCRE)