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

Tutoriais Básicos do PHP

Tutoriais Avançados do PHP

PHP & MySQL

Manual de Referência do PHP

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

PHP 正则表达式(PCRE)

A função preg_replace_callback executa uma busca de expressão regular e usa um callback para substituição.

Sintaxe

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.

Retorno

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.

Exemplo online

<?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

PHP 正则表达式(PCRE)