⊗ppPmRgSHy 238 of 447 menu

Le trait d'union dans les ensembles des expressions régulières PHP

Le trait d'union - est aussi un métacaractère à l'intérieur de [] (mais pas à l'extérieur). Si vous avez besoin du trait d'union lui-même comme caractère - placez-le à un endroit où il ne sera pas interprété comme un séparateur d'intervalle.

Pourquoi c'est important : vous pouvez créer un intervalle de caractères sans vous en rendre compte. Par exemple, comme ceci - [:-@] - vous pensez que vous sélectionnez le deux-points, le trait d'union et l'arobase, mais en réalité, vous obtenez l'intervalle de caractères entre : et @. Cet intervalle inclut les caractères suivants : :, ;, ?, <, =, >.

D'où viennent-ils ? De la table ASCII - le deux-points a un numéro inférieur à celui de l'arobase - et cela forme un intervalle. C'est-à-dire que tous les intervalles sont basés sur la table ASCII (on peut utiliser cela si on le souhaite).

Comment y remédier : placez le trait d'union à un endroit où il ne sera certainement pas interprété comme un métacaractère d'intervalle, par exemple, au début ou à la fin (c'est-à-dire après [ ou avant ]).

On peut aussi échapper le trait d'union - alors il représentera lui-même, indépendamment de sa position. Par exemple, au lieu de [:-@], écrire [:\-@] - et il n'y aura plus d'intervalle, mais trois caractères - le deux-points, le trait d'union et l'arobase @.

Exemple

Dans l'exemple suivant, le motif de recherche est : le chiffre 1, puis une lettre de 'a' à 'z', puis le chiffre 2 :

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[a-z]2#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! 1-2 ! !'

Exemple

Échappons maintenant le trait d'union. En conséquence, le motif de recherche est : le chiffre 1, puis la lettre 'a', ou le trait d'union, ou la lettre 'z', puis le chiffre 2 :

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[a\-z]2#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! ! 1c2 !'

Exemple

On peut simplement déplacer le trait d'union, sans l'échapper :

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[az-]2#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! ! 1c2 !'

Exemple

Dans l'exemple suivant, le motif de recherche est : le premier caractère - est une lettre minuscule ou un trait d'union '-', puis deux lettres 'x' :

<?php $str = 'axx Axx -xx @xx'; $res = preg_replace('#[a-z-]xx#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! Axx ! @xx'

Exemple

Dans l'exemple suivant, le motif de recherche est : le premier caractère - est une lettre minuscule, majuscule ou un trait d'union '-', puis deux lettres 'x' :

<?php $str = 'axx Axx -xx @xx'; $res = preg_replace('#[a-zA-Z-]xx#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! ! ! @xx'

Exemple

On peut placer le trait d'union entre deux intervalles - là, il ne créera certainement pas un autre intervalle :

<?php $str = 'axx 9xx -xx @xx'; $res = preg_replace('#[a-z-0-9]xx#', '!', $str); ?>

En conséquence, la variable contiendra ce qui suit :

'! ! ! @xx'

Tâches pratiques

Soit la chaîne :

<?php $str = 'xaz xBz xcz x-z x@z'; ?>

Trouvez toutes les chaînes correspondant au motif suivant : la lettre 'x', une lettre majuscule ou minuscule ou un trait d'union, la lettre 'z'.

Soit la chaîne :

<?php $str = 'xaz x$z x-z xcz x+z x%z x*z'; ?>

Trouvez toutes les chaînes correspondant au motif suivant : la lettre 'x', puis soit le signe dollar, soit le trait d'union, soit le signe plus, puis la lettre 'z'.

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