Où utiliser une regex ?



POSIX ou PCRE ?

Bonne nouvelle : vous n'aurez pas à activer quoi que ce soit pour faire des expressions régulières (contrairement à la bibliothèque GD).

Il existe deux types d'expressions régulières, qui répondent aux doux noms de :

  • POSIX : c'est un langage d'expressions régulières mis en avant par PHP, qui se veut un peu plus simple que PCRE (ça n'en reste pas moins assez complexe). Toutefois, son principal et gros défaut je dirais, c'est que ce « langage » est plus lent que PCRE ;
  • PCRE : ces expressions régulières sont issues d'un autre langage (le Perl). Considérées comme un peu plus complexes, elles sont surtout bien plus rapides et performantes.


PHP propose donc de choisir entre POSIX et PCRE. Pour ma part, le choix est tout fait : nous allons étudier PCRE.
Rassurez-vous, ce n'est pas beaucoup plus compliqué que POSIX, mais ça a l'avantage d'être très rapide. Et à notre niveau de PHP, ce qui nous intéresse justement c'est la rapidité.


Les fonctions qui nous intéressent


Nous avons donc choisi PCRE. Il existe plusieurs fonctions utilisant le « langage PCRE » et qui commencent toutes par preg_ :

  • preg_grep ;
  • preg_split ;
  • preg_quote ;
  • preg_match ;
  • preg_match_all ;
  • preg_replace ;
  • preg_replace_callback.


Chaque fonction a sa particularité : certaines permettent de faire simplement une recherche, d'autres une recherche et un remplacement, mais leur gros point commun c'est qu'elles utilisent un « langage » identique pour effectuer une recherche.
Lorsque vous aurez appris le langage PCRE, vous pourrez utiliser chacune d'elles sans problème.

Pour éviter de faire trop de théorie, on va commencer, pour s'entraîner, à utiliser une de ces fonctions :preg_match.


preg_match


En utilisant cette fonction, vous pourrez vous exercer en même temps que moi et voir petit à petit si vous avez compris le principe du langage PCRE.
Il faut juste savoir que cette fonction renvoie un booléen : VRAI ou FAUX (true ou false en anglais). Elle renvoie true (vrai) si elle a trouvé le mot que vous cherchiez dans la chaîne, false (faux) si elle ne l'a pas trouvé.

Vous devez lui donner deux informations : votre regex (c'est le petit nom qu'on donne à « expression régulière ») et la chaîne dans laquelle vous faites une recherche.


Voici par exemple comment on peut s'en servir, à l'aide d'une condition if :

<?php

if (preg_match("** Votre REGEX **", "Ce dans quoi vous faites la recherche"))

{

    echo 'Le mot que vous cherchez se trouve dans la chaîne';

}

else

{

    echo 'Le mot que vous cherchez ne se trouve pas dans la chaîne';

}

?>


À la place de « ** Votre REGEX ** », vous taperez quelque chose en langage PCRE, comme ce que je vous ai montré au début de ce chapitre :

#(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))#

C'est justement ceci qui nous intéresse, c'est sur ça que nous allons nous pencher par la suite.
Parce que – au cas où vous ne l'auriez pas remarqué – ce truc-là n'est franchement pas évident à lire… Et le chinois a l'air tout simple à côté !

Créé avec HelpNDoc Personal Edition: Rendez vos PDF plus sécurisés grâce au cryptage et à la protection par mot de passe