Expressions régulières PHP
Qu'est-ce qu'une expression régulière ?
Une expression régulière est une séquence de caractères qui forme un modèle de recherche. Lorsque vous recherchez des données dans un texte, vous pouvez utiliser ce modèle de recherche pour décrire ce que vous recherchez.
Une expression régulière peut être un caractère unique ou un modèle plus compliqué.
Les expressions régulières peuvent être utilisées pour effectuer tous les types d'opérations de recherche et de remplacement de texte.
Syntaxe
En PHP, les expressions régulières sont des chaînes composées de délimiteurs, d'un motif et de modificateurs facultatifs.
$exp = "/w3schools/i";
Dans l'exemple ci-dessus, /
est le délimiteur , w3schools est le modèle recherché et i
est un modificateur qui rend la recherche insensible à la casse.
Le délimiteur peut être n'importe quel caractère autre qu'une lettre, un chiffre, une barre oblique inverse ou un espace. Le délimiteur le plus courant est la barre oblique (/), mais lorsque votre modèle contient des barres obliques, il est pratique de choisir d'autres délimiteurs tels que # ou ~.
Fonctions d'expression régulière
PHP fournit une variété de fonctions qui vous permettent d'utiliser des expressions régulières. Les
fonctions preg_match()
, preg_match_all()
et preg_replace()
sont parmi les plus couramment utilisées :
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Utilisation de preg_match()
La preg_match()
fonction vous dira si une chaîne contient des correspondances d'un modèle.
Exemple
Utilisez une expression régulière pour effectuer une recherche insensible à la casse pour "w3schools" dans une chaîne :
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Utilisation de preg_match_all()
La preg_match_all()
fonction vous dira combien de correspondances ont été trouvées pour un motif dans une chaîne.
Exemple
Utilisez une expression régulière pour faire un décompte insensible à la casse du nombre d'occurrences de "ain" dans une chaîne :
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
Utilisation de preg_replace()
La preg_replace()
fonction remplacera toutes les correspondances du modèle dans une chaîne par une autre chaîne.
Exemple
Utilisez une expression régulière insensible à la casse pour remplacer Microsoft par W3Schools dans une chaîne :
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Outputs "Visit
W3Schools!"
?>
Modificateurs d'expression régulière
Les modificateurs peuvent changer la façon dont une recherche est effectuée.
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
Modèles d'expressions régulières
Les parenthèses sont utilisées pour trouver une plage de caractères :
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Métacaractères
Les métacaractères sont des caractères ayant une signification particulière :
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
Quantificateurs
Les quantificateurs définissent les quantités :
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Remarque : Si votre expression doit rechercher l'un des caractères spéciaux, vous pouvez utiliser une barre oblique inverse ( \ ) pour les échapper. Par exemple, pour rechercher un ou plusieurs points d'interrogation, vous pouvez utiliser l'expression suivante : $pattern = '/\?+/';
Regroupement
Vous pouvez utiliser des parenthèses ( )
pour appliquer des quantificateurs à des modèles entiers. Ils peuvent également être utilisés pour sélectionner des parties du motif à utiliser comme correspondance.
Exemple
Utilisez le regroupement pour rechercher le mot "banane" en recherchant ba suivi de deux instances de na :
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Référence RegExp complète
Pour une référence complète, consultez notre Référence complète des expressions régulières PHP .
La référence contient des descriptions et des exemples de toutes les fonctions d'expression régulière.