preg_quote
preg_replace
PCRE Functions
PHP Manual

# 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 `$asunto` [, 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` .

### Lista de parámetros

`patron`

  El patrón a buscar. Puede ser una cadena o una matriz con cadenas.

`llamada_de_retorno`

  Una llamada de retorno que será usada pasándole una matriz de los elementos coincidentes en `asunto` . La llamada de retorno debería devolver la cadena de reemplazo.

  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.

  Example #1 preg_replace_callback() y create_function()

  `<?php
  /* un filtro de línea de comandos tipo Unix para convertir letras
  * mayúsculas al comienzo de los parágrafos a minúsculas */
  $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 aquí,
  // o alternativamente escapar todos los signos $ como \$
  '$coincidencias',
  'return strtolower($coincidencias[0]);'
  ),
  $linea
  );
  echo $linea;
  }
  fclose($da);
  ?>`

`asunto`

  La cadena o una matriz con cadenas para buscar y reemplazar.

`limite`

  La cantidad máxima posible de reemplazos para cada patrón en cada cadena `asunto` . Su valor predeterminado es -1 (sin límite).

`conteo`

  Si se especifica, esta variables será llenada con el número de reemplazos realizados.

### Valores retornados

preg_replace_callback() devuelve una matriz si el parámetro `asunto` es una matriz, o una cadena de lo contrario.

Si se encuentran coincidencias, el nuevo `asunto` será devuelto, de otra forma `asunto` será devuelto intacto.

### Registro de cambios

Versión | Descripción
--- | ---
5.1.0 | El parámetro `conteo` fue agregado

### Ejemplos

Example #2 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 subpatrón
// ubicado entre '(...)' y así sucesivamente
return $coincidencias[1].($coincidencias[2]+1);
}
echo preg_replace_callback(
"|(\d{2}/\d{2}/)(\d{4})|",
"siguiente_anyo",
$texto);
?>`

El resultado del ejemplo seria:

    El día de los inocentes es 04/01/2003
    La última navidad fue 12/24/2002

Example #3 preg_replace_callback() usando una estructura recursiva para manejar código BB encapsulado

`<?php
$entrada = "plano [indent] profundo [indent] más profundo [/indent] profundo [/indent] plano";
function procesarEtiquetasRecursivamente($entrada)
{
$regex = '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';
if (is_array($entrada)) {
$entrada = '<div style="margin-left: 10px">'.$entrada[1].'</div>';
}
return preg_replace_callback($regex, 'procesarEtiquetasRecursivamente', $entrada);
}
$salida = procesarEtiquetasRecursivamente($entrada);
echo $salida;
?>`

### Ver también

- preg_replace() - Realizar una operación de búsqueda y reemplazo con expresiones regulares
- create_function() - Crear una función anónima (estilo-lambda)
- information about the callback type

preg_quote
preg_replace
PCRE Functions
PHP Manual