Fonction PHP preg_replace_callback_array()
Exemple
Montrez combien de lettres ou de chiffres se trouvent dans chaque mot d'une phrase :
<?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;
?>
Définition et utilisation
La preg_replace_callback_array()
fonction renvoie une chaîne ou un tableau de chaînes dans lequel les correspondances d'un ensemble d'expressions régulières sont remplacées par la valeur de retour d'une fonction de rappel.
Remarque : Pour chaque chaîne, la fonction évalue les modèles dans l'ordre dans lequel ils sont donnés. Le résultat de l'évaluation du premier modèle sur la chaîne est utilisé comme chaîne d'entrée pour le deuxième modèle et ainsi de suite. Cela peut entraîner un comportement inattendu.
Syntaxe
preg_replace_callback_array(patterns, input, limit, count)
Valeurs des paramètres
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 |
Détails techniques
Valeur de retour : | Renvoie une chaîne ou un tableau de chaînes résultant de l'application des remplacements à la chaîne ou aux chaînes d'entrée |
---|---|
Version PHP : | 7+ |
Plus d'exemples
Exemple
Cet exemple illustre les effets potentiellement inattendus des modèles évalués en séquence. Tout d'abord, le remplacement de countLetters ajoute "[4lettre]" à "jours" et, une fois ce remplacement effectué, le remplacement de countDigits trouve le "4" dans "4lettre" et ajoute "[1chiffre]" à cela :
<?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;
?>
❮ Référence PHP RegExp