English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A função preg_replace_callback executa uma busca de expressão regular e usa um callback para substituição.
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 , int &$count ]] )
O comportamento dessa função é semelhante ao preg_replace(), exceto que pode especificar um callback para calcular a substituição da string.
Descrição dos parâmetros:
$pattern: Padrão a ser pesquisado, pode ser uma string ou um array de strings.
$callback: Função de callback chamada sempre que for necessário substituir, recebendo como parâmetro os resultados correspondentes do subject.
$subject: String ou array de strings a serem pesquisadas e substituídas.
$limit: Opcional, número máximo de substituições permitidas para cada padrão em cada string subject. O padrão é-1(ilimitado)。
$count: Opcional, número de substituições executadas.
Se o subject for um array, preg_replace_callback() retorna um array, caso contrário, retorna uma string. Em caso de erro, retorna NULL.
Se encontrar correspondências, retorna a string de destino substituída (ou array de strings), caso contrário, o subject será retornado sem mudanças.
<?php
// Aumentar o ano do texto em um ano.
$text = "Dia de愚人节 é 04/01/2002\n";
$text .= "Noite de Natal passado foi 12/24/2001\n";
// função de callback
function next_year($matches)
{
// Normalmente: $matches[0] é a correspondência completa
// $matches[1] é a primeira sub expressão capturada
// 以此类推
return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
"|/(\d{2}/\d{2}/)(\d{4})|",
"next_year",
$text);
?>
执行结果如下所示:
Dia de愚人节 é 04/01/2003 Noite de Natal passado foi 12/24/2002