(PHP 5 >= 5.4.1, PHP 7, PHP 8)
mb_ereg_replace_callback — Realiza uma busca e substituição de expressão regular com suporte a string multibyte usando um callback
$pattern
,$callback
,$string
,$options
= 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
.
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.
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.
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. |
Exemplo #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
O exemplo acima produzirá:
April fools day is 04/01/2003 Last christmas was 12/24/2002
Exemplo #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);
?>
Nota:
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.