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&iacute;a de los inocentes es 04/01/2002\n";
$texto.= "La &uacute;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&iacute;a de los inocentes es 04/01/2003
// La &uacute;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.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:05