(PHP 5 >= 5.4.1, PHP 7, PHP 8)
mb_ereg_replace_callback — Realiza una búsqueda y sustitución de una expresión regular con soporte multibyte usando una llamada de retorno
$pattern
,$callback
,$string
,$option
= "msr"
Examina string
para buscar coincidencias con
pattern
, luego reemplaza el texto coincidente
con la salida de la función callback
.
El comportamiento de esta función es casi idéntico al de mb_ereg_replace(),
excepto que en lugar del parámetro
replacement
, se debería especificar una llamada de retorno dada por
callback
.
pattern
El patrón de la expresión regular.
Se pueden usar caracteres multibyes en pattern
.
callback
Una llamada de retorno que será invocada y se le proporcionará un array de elementos coincidentes
en el string subject
. La llamada de retorno debería
devolver el string de sustitución.
A menudo será necearia la función callback
para una mb_ereg_replace_callback() en un sólo lugar.
En este caso se puede usar una
función anónima para
declarar una llamada de retorno dentro de la llamada a
mb_ereg_replace_callback(). De esta manera
se tendrá toda la información para la llamada en un lugar para no
abarrotar el espacion de nombres de funciones con un nombre de de una función de llamada
de retorno que no se usará.
string
El string a comprobar.
option
Las condiciones de comparación se pueden establecer por el parámetro
option
. Si se especifica i
para este
parámetro, no se tendrán en cuenta las mayúsculas/minúsculas. Si se especifica
x
, se ingorarán los espacios en blanco. Si se especifica
m
, la comparación se ejecutará en modo multilínea y se incluirán
los saltos de línea en '.'. Si se especifica p
,
la comparación se ejecutará en modo POSIX, por lo que los saltos de línea
se cosiderarán como caracteres normales. Observe que e
no se puede usar en mb_ereg_replace_callback().
Nota:
La codificación interna o la codificación especificada por mb_regex_encoding() será usada en esta función.
Ejemplo #1 Ejemplo de mb_ereg_replace_callback()
<?php
// este texto se uso en 2002
// queremos obtener esto para fechas hasta 2003
$texto = "El día de los Santos Inocentes es el 28/12/2002\n";
$texto.= "Las últimas navidades fueron el 24/12/2001\n";
// la función de llamada de retonro
function siguiente_año($coincidencias)
{
// como siempre: $coincidencias[0] es la coincidencia completa
// $coincidencias[1] la coincidencia para el primer subpatrón
// encerrado entre '(...)', etc.
return $coincidencias[1].($coincidencias[2]+1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"siguiente_año",
$texto);
?>
El resultado del ejemplo sería:
El día de los Santos Inocentes es el 28/12/2003 Las últimas navidades fueron el 24/12/2002
Ejemplo #2 mb_ereg_replace_callback() usando una función anónima admitida en PHP 5.3.0 o posterior
<?php
// este texto se uso en 2002
// queremos obtener esto para fechas hasta 2003
$texto = "El día de los Santos Inocentes es el 28/12/2002\n";
$texto.= "Las últimas navidades fueron el 24/12/2001\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($coincidencias) {
return $coincidencias[1].($coincidencias[2]+1);
},
$texto);
?>