Position actuelle: Accueil> Catégories de fonctions> preg_replace_callback_array

preg_replace_callback_array

Effectuez une recherche d'expression régulière et utilisez le remplacement du rappel
Nom:preg_replace_callback_array
Catégorie:PCRE de traitement régulier
Langage de programmation:php
Description en une ligne:Étant donné un tableau qui associe une expression à une fonction de rappel, renvoie une chaîne où toutes les correspondances de chaque expression sont remplacées par la sous-chaîne renvoyée par la fonction de rappel.

Définition et utilisation

La fonction preg_replace_callback_array() renvoie une chaîne ou un tableau de chaînes, où un ensemble d'expression régulière correspond à la valeur de retour de la fonction de rappel.

Remarque: Pour chaque chaîne, la fonction évalue le modèle dans l'ordre donné. Le résultat de l'évaluation du premier modèle sur la chaîne sera utilisé comme chaîne d'entrée pour le deuxième motif, etc. Cela peut conduire à un comportement inattendu.

Exemple

Exemple 1

Montrez combien de lettres ou de chiffres chaque mot d'une phrase contient:

 <? Php
fonction countletters ( $ correspond ) {
  Retour $ correspond [ 0 ] . '[' . strlen ( $ correspond [ 0 ] ) . 'lettre]' ;
}

fonction countDigits ( $ correspond ) {
  Retour $ correspond [ 0 ] . '[' . strlen ( $ correspond [ 0 ] ) . 'numérique]' ;
}

$ input = "Il y a 365 jours par an." ;
$ motifs = [
  '/ \ b [az] + \ b / i' => 'countletters' ,
  '/ \ b [0-9] + \ b /' => 'countdigits'
] ]
$ result = preg_replace_callback_array ( $ motifs , $ entrée ) ;
Echo $ Résultat ;
?>

Essayez-le vous-même

Exemple 2

Cet exemple illustre les effets inattendus potentiels que le modèle peut avoir dans une évaluation séquentielle. Tout d'abord, le remplacement de Countletters ajoutera "[4letter]" après "jours". Après avoir exécuté le remplacement, le remplacement de CountDigits trouvera "4" dans "4letter" et ajoutera "[1Digit]":

 <? Php
fonction countletters ( $ correspond ) {
  Retour $ correspond [ 0 ] . '[' . strlen ( $ correspond [ 0 ] ) . 'lettre]' ;
}

fonction countDigits ( $ correspond ) {
  Retour $ correspond [ 0 ] . '[' . strlen ( $ correspond [ 0 ] ) . 'numérique]' ;
}

$ input = "365 jours" ;
$ motifs = [
  '/ [az] + / i' => 'countletters' ,
  '/ [0-9] + /' => 'countdigits'
] ]
$ result = preg_replace_callback_array ( $ motifs , $ entrée ) ;
Echo $ Résultat ;
?>

Essayez-le vous-même

Fonctions similaires
Articles populaires