Il arrive qu’on doive manipuler des chaînes de caractères dans lesquels plusieurs espaces consécutifs se sont glissés, comme dans cette chaîne :
[pastacode lang= »php » manual= »%24str%20%3D%20’Bonjour%20%20%20%20%20%20%20Toto%20!’%20%3B%20%0A » message= » » highlight= » » provider= »manual »/]
Cela devient embêtant si l’on doit traiter cette chaine de caractère au caractère près. Imaginons par exemple que nous voulons remplacer tous les « Bonjour Toto » d’une chaîne par des « Bonjour Tata », str_replace() ne retournera rien car il ne trouvera pas la chaine telle que demandée :
[pastacode lang= »php » manual= »%24str%20%3D%20’Bonjour%20%20%20%20%20%20%20Toto%20!’%20%3B%20%0Aecho%20str_replace(‘Bonjour%20Toto%20!’%2C%20’Bonjour%20Tata%20!’%2C%20%24str)%20%3B%20%0A%2F%2F%20Retourne%20%3A%20’Bonjour%20%20%20%20%20%20%20Toto%20!' » message= » » highlight= » » provider= »manual »/]
Mais avec une expression régulière, nous pouvons demander à ce que tous les espaces multiples soient transformés en un seul espace.
C’est ce que nous allons faire avec la fonction preg_replace() qui recherche et remplace par une expression rationnelle standard :
[pastacode lang= »php » manual= »%24str%20%3D%20’Bonjour%20%20%20%20%20%20%20Toto%20!’%20%3B%20%0A%24str%20%3D%20preg_replace(‘%2F%5Cs%2B%2F’%2C%20’%20’%2C%20%24str)%3B%0Aecho%20str_replace(‘Bonjour%20Toto%20!’%2C%20’Bonjour%20Tata%20!’%2C%20%24str)%20%3B%20%0A%2F%2F%20Retourne%20%3A%20’Bonjour%20Tata%20!' » message= » » highlight= »2″ provider= »manual »/]
Laisser un commentaire