Función PHP preg_replace_callback_array()
Ejemplo
Muestre cuántas letras o dígitos se encuentran en cada palabra en una oración:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Definición y uso
La preg_replace_callback_array()
función devuelve una cadena o una matriz de cadenas en las que las coincidencias de un conjunto de expresiones regulares se reemplazan con el valor de retorno de una función de devolución de llamada.
Nota: Para cada cadena, la función evalúa los patrones en el orden en que se dan. El resultado de evaluar el primer patrón de la cadena se utiliza como cadena de entrada para el segundo patrón y así sucesivamente. Esto puede conducir a un comportamiento inesperado.
Sintaxis
preg_replace_callback_array(patterns, input, limit, count)
Valores paramétricos
Parameter | Description |
---|---|
pattern | Required. An associative array which associates regular
expression patterns to callback functions. The callback functions have one parameter which is an array of matches.The first element in the array contains the match for the whole expression while the remaining elements have matches for each of the groups in the expression. |
input | Required. The string or array of strings in which replacements are being performed |
limit | Optional. Defaults to -1, meaning unlimited. Sets a limit to how many replacements can be done in each string |
count | Optional. After the function has executed, this variable will contain a number indicating how many replacements were performed |
Detalles técnicos
Valor devuelto: | Devuelve una cadena o una matriz de cadenas resultantes de aplicar los reemplazos a la cadena o cadenas de entrada |
---|---|
Versión PHP: | 7+ |
Más ejemplos
Ejemplo
Este ejemplo ilustra los efectos potencialmente inesperados de los patrones que se evalúan en secuencia. Primero, el reemplazo countLetters agrega "[4letter]" a "days" y, después de que se haya realizado ese reemplazo, el reemplazo countDigits encuentra el "4" en "4letter" y agrega "[1digit]" a eso:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "365 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
❮ Referencia PHP RegExp