Função PHP preg_replace_callback_array()
Exemplo
Mostre quantas letras ou dígitos são encontrados em cada palavra em uma frase:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Definição e uso
A preg_replace_callback_array()
função retorna uma string ou uma matriz de strings na qual as correspondências de um conjunto de expressões regulares são substituídas pelo valor de retorno de uma função de retorno de chamada.
Nota: Para cada string, a função avalia os padrões na ordem em que são fornecidos. O resultado da avaliação do primeiro padrão na string é usado como a string de entrada para o segundo padrão e assim por diante. Isso pode levar a um comportamento inesperado.
Sintaxe
preg_replace_callback_array(patterns, input, limit, count)
Valores de parâmetro
Parameter | Description |
---|---|
pattern | Required. An associative array which associates regular
expression patterns to callback functions. The callback functions have one parameter which is an array of matches.The first element in the array contains the match for the whole expression while the remaining elements have matches for each of the groups in the expression. |
input | Required. The string or array of strings in which replacements are being performed |
limit | Optional. Defaults to -1, meaning unlimited. Sets a limit to how many replacements can be done in each string |
count | Optional. After the function has executed, this variable will contain a number indicating how many replacements were performed |
Detalhes técnicos
Valor de retorno: | Retorna uma string ou uma matriz de strings resultantes da aplicação das substituições à string ou strings de entrada |
---|---|
Versão do PHP: | 7+ |
Mais exemplos
Exemplo
Este exemplo ilustra os efeitos potencialmente inesperados dos padrões sendo avaliados em sequência. Primeiro, a substituição countLetters adiciona "[4letter]" a "days" e, após a substituição, a substituição countDigits encontra o "4" em "4letter" e adiciona "[1digit]" a isso:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "365 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
❮ Referência PHP RegExp