Des recherches simples



On va commencer par faire des recherches très simples et très basiques. Normalement, vous ne devriez pas avoir trop de mal à suivre pour l'instant, c'est quand on mélangera tout après que ça se compliquera.

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 car 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


À 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 :

<?php

if (preg_match("#guitare#", "J'aime jouer de la guitare."))

{

    echo 'VRAI';

}

else

{

    echo 'FAUX';

}

?>


Si vous exécutez ce code, vous verrez qu'il 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


O.K., c'est compris jusque-là ? ;-) 
On a trouvé le mot « guitare » dans la première phrase, mais pas « piano » dans la seconde.
Jusque-là c'est facile, mais je ne 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 deux 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 justement utiliser une option. C'est la seule que vous aurez besoin de retenir pour le moment. Il faut rajouter la lettre « i » après le 2e 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 entre majuscules et 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 deux 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 deux fois la barre verticale. Cela signifie que l'on recherche guitare OU piano OU banjo.

Vous suivez toujours ?
Parfait !
On peut maintenant voir les problématiques 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…

Créé avec HelpNDoc Personal Edition: Transformez votre processus de création de fichier d'aide CHM avec HelpNDoc