On va commencer à faire des recherches très simples et très basiques. Normalement, vous ne devriez pas avoir trop de mal pour l'instant à suivre, c'est quand on mélange tout après que ça se complique.
Première chose importante à savoir : une regex (= expression régulière) est toujours entourée de caractères spéciaux appelés
délimiteurs.
On peut choisir n'importe quel caractère spécial comme délimiteur, et pour éviter de tourner en rond trop longtemps je vais vous en imposer un : le dièse !
Votre regex se trouve alors entourée de dièses, comme ceci :
#Ma regex#
Euh, mais à quoi servent les dièses, puisque de toute façon la regex est entourée par des guillemets dans la fonction PHP ?
Parce que, si on veut, on peut utiliser des options. On ne va pas parler des options tout de suite (on n'en a pas besoin pour commencer), mais sachez que ces options se placent après le second dièse, comme ceci :
#Ma regex#Options
A la place de "Ma regex", vous devez mettre le mot que vous recherchez.
Prenons un exemple : vous aimeriez savoir si une variable contient le mot "guitare". Il vous suffit d'utiliser la regex suivante pour faire la recherche :
#guitare#
Dans un code PHP, ça donne :
Code : PHP | <?php
if (preg_match("#guitare#", "J'aime jouer de la guitare."))
{
echo 'VRAI';
}
else
{
echo 'FAUX';
}
?>
|
Comme vous pouvez le voir, notre script affiche VRAI parce que le mot guitare a été trouvé dans la phrase "J'aime jouer de la guitare."
Retenez bien ce petit bout de code, nous allons le garder un moment en changeant parfois la regex, parfois la phrase dans laquelle on fait la recherche.
Pour que vous compreniez bien comment les regex se comportent, je vais vous présenter les résultats dans un tableau, comme ceci :
| Chaîne |
Regex |
Résultat |
| J'aime jouer de la guitare. |
#guitare# |
VRAI |
| J'aime jouer de la guitare. |
#piano# |
FAUX |
Ok, c'est compris jusque-là ?

On a trouvé le mot "guitare" dans la première regex, mais pas "piano" dans la seconde.
Jusque-là c'est facile, mais je vais pas tarder à compliquer !
Et tu casses, tu casses, tu casses...
Il y a quelque chose qu'il faut que vous sachiez : les regex font la différence entre majuscules et minuscules (on dit qu'elles sont "sensibles à la casse").Tenez, regardez ces 2 regex par exemple :
| Chaîne |
Regex |
Résultat |
| J'aime jouer de la guitare. |
#Guitare# |
FAUX |
| J'aime jouer de la guitare. |
#GUITARE# |
FAUX |
Comment faire si on veut que nos regex ne fassent plus la différence entre majuscules et minuscules ?
On va utiliser justement une
option. C'est la seule que vous aurez besoin de retenir pour le moment. Il faut rajouter la lettre "i" après le 2ème dièse, et la regex ne fera plus attention à la casse :
| Chaîne |
Regex |
Résultat |
| J'aime jouer de la guitare |
#Guitare#i |
VRAI |
| Vive la GUITARE ! |
#guitare#i |
VRAI |
| Vive la GUITARE ! |
#guitare# |
FAUX |
Dans le dernier exemple, je n'ai pas mis l'option "i" alors on m'a répondu FAUX.
Mais dans les autres exemples, vous pouvez voir que le "i" a permis de ne plus faire la différence majuscules / minuscules.
Le symbole OU
On va maintenant utiliser le symbole OU, que vous avez déjà vu dans le chapitre sur les conditions : c'est la barre verticale "
|".
Grâce à elle, vous allez pouvoir laisser plusieurs possibilités à votre regex. Ainsi, si vous tapez :
#guitare|piano#
Cela veut dire que vous cherchez soit le mot "guitare", soit le mot "piano". Si un des 2 mots est trouvé, la regex répond VRAI.
Voici quelques exemples :
| Chaîne |
Regex |
Résultat |
| J'aime jouer de la guitare. |
#guitare|piano# |
VRAI |
| J'aime jouer du piano. |
#guitare|piano# |
VRAI |
| J'aime jouer du banjo. |
#guitare|piano# |
FAUX |
| J'aime jouer du banjo. |
#guitare|piano|banjo# |
VRAI |
Dans le dernier exemple, j'ai mis 2 fois la barre verticale. Cela signifie que l'on recherche guitare OU piano OU banjo.
Vous suivez toujours ?

Parfait !

On peut maintenant voir les histoires de début et de fin de chaîne, et ensuite on pourra passer à la vitesse supérieure.
Début et fin de chaîne
Les regex permettent d'être très très précis, vous allez bientôt vous en rendre compte.
Jusqu'ici en effet, le mot pouvait se trouver n'importe où. Mais supposons que l'on veuille que la phrase commence ou se termine par ce mot ?
Nous allons avoir besoin des deux symboles suivants, retenez-les :
- ^ (accent circonflexe) : indique le début d'une chaîne.
- $ (dollar) : indique la fin d'une chaîne.
Ainsi, si vous voulez qu'une chaîne commence par "Bonjour", il faudra utiliser la regex :
#^Bonjour#
Si vous placez le symbole "^" devant le mot, alors ce mot devra obligatoirement se trouver au début de la chaîne, sinon on vous répondra FAUX.
De même, si on veut vérifier que la chaîne se termine par "zéro", on écrira cette regex :
#zéro$#
Compris ? Voici une série de tests pour que vous voyiez bien comment ça fonctionne :
| Chaîne |
Regex |
Résultat |
| Bonjour petit zéro |
#^Bonjour# |
VRAI |
| Bonjour petit zéro |
#zéro$# |
VRAI |
| Bonjour petit zéro |
#^zéro# |
FAUX |
| Bonjour petit zéro !!! |
#zéro$# |
FAUX |
Simple non ?
Dans le dernier cas ça ne fonctionne pas, car la chaîne ne se termine pas par "zéro" mais par "!!!". Donc forcément, on nous répond faux...