⊗ppPmRgESCh 226 of 447 menu

Échappement des caractères spéciaux dans les regex PHP

Supposons que nous voulions qu'un caractère spécial désigne lui-même. Pour cela, il faut l'échapper avec un antislash. Regardons des exemples.

Exemple

Dans l'exemple suivant, l'auteur de l'expression régulière voulait que le motif de recherche soit : la lettre 'a', puis le plus '+', puis la lettre 'x'. Cependant, l'auteur du code n'a pas échappé le symbole '+' et donc le motif de recherche est en réalité : la lettre 'a' une ou plusieurs fois, puis la lettre 'x' :

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a+x#', '!', $str); ?>

En conséquence, la variable contiendra ceci :

'a+x ! ! !'

Exemple

Maintenant, l'auteur a échappé le plus avec un antislash. Maintenant le motif de recherche est comme il se doit : la lettre 'a', puis le plus '+', puis la lettre 'x'.

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a\+x#', '!', $str); ?>

En conséquence, la variable contiendra ceci :

'! ax aax aaax'

Exemple

Dans cet exemple, le motif est : la lettre 'a', puis le point '.', puis la lettre 'x' :

<?php $str = 'a.x abx azx'; $res = preg_replace('#a\.x#', '!', $str); ?>

En conséquence, la variable contiendra ceci :

'! abx azx'

Exemple

Dans l'exemple suivant, l'auteur a oublié d'échapper le point et l'expression régulière a correspondue à toutes les sous-chaînes, car le point non échappé désigne n'importe quel caractère :

<?php $str = 'a.x abx azx'; $res = preg_replace('#a.x#', '!', $str); ?>

En conséquence, la variable contiendra ceci :

'! ! !'

Exemple

Notez que si vous oubliez l'antislash pour le point (quand il doit désigner lui-même) - on peut même ne pas le remarquer :

<?php preg_replace('#a.x#', '!', 'a.x'); // renvoie '!', comme nous le voulions ?>

Visuellement, cela fonctionne correctement (car le point désigne n'importe quel caractère, y compris le point normal '.'). Mais si on change la chaîne dans laquelle les remplacements ont lieu - nous verrons notre erreur :

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // renvoie '! ! !', mais on attendait '! abx azx' ?>
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser