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.
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
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