7.89 Expressions régulières compatibles Perl
7 Index des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes prédefinies . Exemples . options de recherche . syntaxe des masques . preg_grep . preg_match_all . preg_match . preg_quote ->preg_replace_callback . preg_replace . preg_split
|
7.89.14 preg_replace_callback()
Rechercher/remplacer avec une expression régulière et fonction de callback
[ Exemples avec preg_replace_callback ] PHP 4 >= 4.0.5
mixed
preg_replace_callback (
mixed
pattern
,
callback
callback
,
mixed
subject
,
int
limit
)
Le comportement de
preg_replace
est presque
identique à celui de
preg_replace
, hormis le fait
qu'à la place du paramètre
replacement
, il faut
spécifier une fonction de callback
callback
qui sera appelée, avec les éléments trouvés en arguments.
Cette fonction retourne alors la chaîne de remplacement.
Exemple avec preg_replace_callback |
<?php // Ce texte était vrai en 2002 // nous voulons le mettre a jour pour 2003 $text = "Le premier avril est le 01/04/2002\n"; $text.= "Le dernier noel était le 12/24/2001\n"; // Fonction de callback function next_year($matches) { // comme d'habitude : $matches[0] représente la valeur totale // $matches[1] représente la première parenthèse capturante return $matches[1].($matches[2]+1); }
echo preg_replace_callback( "|(\d{2}/\d{2}/)(\d{4})|", "next_year", $text);
// retourne ceci : // Le premier avril est le 01/04/2003 // Le dernier noel était le 12/24/2002 ?>
|
Vous aurez souvent besoin de la fonction
callback
avec
preg_replace_callback
à un seul endroit.
Dans ce cas, vous pouvez simplement utiliser la fonction
create_function
pour déclarer une fonction anonyme
comme fonction de callback pour
preg_replace_callback
.
En faisant cela, vous concentrez toutes les routines liées à
votre remplacement à un seul endroit, et nous ne polluez par
votre espace de noms de fonctions avec des fonctions à usage unique.
Exemples avec preg_replace_callback et create_function |
<?php // Un filtre de ligne de commande Unix pour convertir les lettres // en majuscule de début des paragraphe en minuscules
$fp = fopen("php://stdin", "r") or die("Impossible de lire la ligne de commande"); while (!feof($fp)) { $line = fgets($fp); $line = preg_replace_callback( '|<p>\s*\w|', create_function( // Les guillemets simples sont très importants ici // ou bien il faut protéger les caractères $ avec \$ '$matches', 'return strtolower($matches[0]);' ), $line ); echo $line; } fclose($fp); ?>
|
Voir aussi
preg_replace
et
create_function
.
|