(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
// $matches[1] é a correspondência para a primeira sub-expressão
// envolvida 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
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.