preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5)
preg_replace_callback -- Realizar una búsqueda con expresiones regulares y
generar reemplazos usando una llamada de retorno
Descripción
mixed
preg_replace_callback ( mixed patron, callback llamada_de_retorno, mixed fuente [, int limite [, int &conteo]] )
El comportamiento de esta función es casi idéntico al
de preg_replace(), con la excepción de
que en lugar del parámetro reemplazo,
uno debe especificar una llamada_de_retorno
que será usada pasándole una matriz de los elementos
coincidentes en la cadena fuente. La llamada de retorno
debería devolver la cadena de reemplazo.
Ejemplo 1. Ejemplo de preg_replace_callback()
<?php // este texto fue usado en 2002 // queremos actualizarlo para 2003 $texto = "El día de los inocentes es 04/01/2002\n"; $texto.= "La última navidad fue 12/24/2001\n"; // la llamada de retorno function siguiente_anyo($coincidencias) { // como es usual: $coincidencias[0] es la coincidencia completa // $coincidencias[1] la coincidencia para el primer subpatron // ubicado entre '(...)' y asi sucesivamente
return $coincidencias[1].($coincidencias[2]+1); } echo preg_replace_callback( "|(\d{2}/\d{2}/)(\d{4})|", "siguiente_anyo", $texto); // el resultado es: // El día de los inocentes es 04/01/2003 // La última navidad fue 12/24/2002 ?>
|
|
Con frecuencia necesitará la función de
llamada de retorno cuando use
preg_replace_callback() únicamente en un
lugar. En este caso, usted puede usar
create_function() para declarar una
función anónima como llamada de retorno dentro del
llamado a preg_replace_callback(). Al hacerlo de
este modo, usted tendrá toda la información necesaria
para el llamado en un solo lugar y no abarrota su espacio de
nombres de funciones con nombres de llamadas de retorno que no son
usadas en ninguna otra parte.
Ejemplo 2. preg_replace_callback() y
create_function()
<?php /* un filtro de linea de comandos tipo Unix para convertir letras * mayusculas al comienzo de los paragrafos a minusculas */ $da = fopen("php://stdin", "r") or die("no se puede leer stdin"); while (!feof($da)) { $linea = fgets($da); $linea = preg_replace_callback( '|<p>\s*\w|', create_function( // las comillas sencillas son cruciales aqui, // o alternativamente escapar todos los signos $ como \$ '$coincidencias', 'return strtolower($coincidencias[0]);' ), $linea ); echo $linea; } fclose($da); ?>
|
|
Nota:
El parámetro conteo está
disponible desde PHP 5.1.0.
Vea también preg_replace(),
create_function(), , y
information about the callback type.