mb_ereg_replace_callback
(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
Descrição
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
- mb_regex_encoding() - Define/Obtém codificação de caracteres para regex multibyte
- mb_ereg_replace() - Substituir expressão regular com suporte a multibyte
- Funções Anônimas