mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

mb_ereg_replace_callbackRealiza uma busca e substituição de expressão regular com suporte a string multibyte usando um callback

Descrição

mb_ereg_replace_callback(
    string $pattern,
    callable $callback,
    string $string,
    ?string $options = null
): string|false|null

Examina string em busca de correspondências com pattern, em seguida, substitui o texto correspondido pelo resultado da função callback.

O comportamento desta função é quase idêntico ao de mb_ereg_replace(), exceto pelo fato de que, em vez de replacement, deve-se especificar um callback.

Parâmetros

pattern

O padrão de expressão regular.

Caracteres multibyte podem ser usados em pattern.

callback

Um callback que será chamado e receberá um array de elementos correspondidos na string. O callback deve retornar a string de substituição.

Você frequentemente precisará da função callback para um mb_ereg_replace_callback() em apenas um lugar. Nesse caso, você pode usar uma função anônima para declarar o retorno de chamada dentro da chamada para mb_ereg_replace_callback(). Fazendo isso, você tem todas as informações para a chamada em um só lugar e não polui o namespace da função com o nome de uma função de callback não utilizada em nenhum outro lugar.

string

A string sendo verificada.

options

A opção de pesquisa. Consulte mb_regex_set_options() para explicação.

Valor Retornado

A string resultante em caso de sucesso ou false em caso de erro. Se string não for válida para a codificação atual, null é retornado.

Registro de Alterações

Versão Descrição
8.0.0 options é anulável agora.
7.1.0 A função verifica se string é válida para a codificação atual.

Exemplos

Example #1 Exemplo de mb_ereg_replace_callback()

<?php
// este texto foi usado em 2002
// queremos atualizá-lo para 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// a função callback
function next_year($matches)
{
  // como de costume: $matches[0] é a correspondência completa
  // $matches[1] é a correspondência para o primeiro subpadrão
  // cercado por '(...)' e assim por diante
  return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            "next_year",
            $text);

?>

O exemplo acima produzirá:

April fools day is 04/01/2003
Last christmas was 12/24/2002

Example #2 mb_ereg_replace_callback() usando função anônima

<?php
// este texto foi usado em 2002
// queremos atualizá-lo para 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";

echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            function ($matches) {
               return $matches[1].($matches[2]+1);
            },
            $text);
?>

Notas

Note:

A codificação interna ou a codificação de caracteres especificada por mb_regex_encoding() será usada como a codificação de caracteres para esta função.

Veja Também