Cours PHP les expression régulières

Cours PHP les expression régulières, tutoriel & guide de travaux pratiques en pdf.

Les expressions régulières Perl en détails

preg_match
preg_match fonctionne EXACTEMENT comme ereg et eregi, à ceci près qu’elle prend en premier paramètre une expression régulière Perl. Cette fonction est également plus performante (en temps d’exécution) que ses homologues POSIX. Le troisième argument optionnel a exactement le même rôle également.
Exemples
Nous allons reprendre les deux exemples traités dans la section sur ereg/eregi. Le premier exemple permettait de dire si une adresse e-mail était syntaxiquement valide ou non. En POSIX, l’expression régulière était ^[[:alnum:]_\.]+@[[:alnum:]_\.]+\.[[:alpha:]]+$ En PCRE, on va coller à cette expression, en utilisant simplement les classes réservées propres : /^[\w\.]+@[\w\.]+\.[a-z]+$/i. Cela donnera : if (preg_match(″/^[\w\.]+@[\w\.]+\.[a-z]+$/i″, $adresse)) { echo ″$adresse est invalide.″; } else { echo ″$adresse est valide.″; }
Le deuxième exemple permettait de trouver une adresse e-mail dans un texte, et d’en extraire les deux composantes. Le raisonnement est à nouveau le même, et mène au code suivant : if (preg_match(″/([\w\.]+)@([\w\.]+\.[a-z]+)/i″, $texte, $regs)) { echo ″On a trouvé l’adresse {$regs[0]}.\n″; echo ″LOGIN : {$regs[1]}.\n″; echo ″DOMAINE : {$regs[2]}.″; } else { echo ″aucune adresse e-mail dans cette chaîne.″; }
À ce stade vous devriez avoir bien compris le concept, et surtout assimilé que la différence entre POSIX et PCRE n’est pas si profonde que ça. Il ne s’agit que d’une différence de syntaxe, et également du moteur qui tourne derrière tout ça, celui des PCRE étant plus performant. C’est pourquoi, il est intéressant d’utiliser plus particulièrement les PCRE que les expressions régulières POSIX. La difficulté n’étant pas spécialement accrue, et les performances meilleures.
preg_match_all
Cette fonction permet de faire quelque chose qui n’est pas possible avec les expressions POSIX (du moins impossible aussi simplement). Elles permet en effet d’extraire d’une chaîne TOUTES les sous-chaînes reconnues par la PCRE passée en paramètre.
Les paramètres
preg_match_all prend 3 à 4 paramètres. Les trois premiers sont dans l’ordre : l’expression régulière PCRE, la chaîne sujet, et le paramètre-résultat qui contiendra la tableau des occurrences rencontrées. Ce tableau a toujours deux dimensions. Le 4e est un entier, qui indique dans quel ordre seront rangés les résultat.
PREG_PATTERN_ORDER est la valeur par défaut. Quand cet ordre est spécifié, le tableau résultat est tel que son premier élément (d’indice 0) est la liste des sous-chaînes reconnues par le masque complet (sous-masque de profondeur 0), et les éléments suivants (d’indice i) sont la liste des sous-chaîne reconnues par le sous-masque correspondant (le i_ème sous-masque).
PREG_SET_ORDER Quand cet ordre est spécifié, le tableau est une liste de résultats. Chaque résultat étant un tableau tel que son premier élément est la première sous-chaîne reconnue par l’expressions régulière, et les éléments suivants correspondent aux sous-masques appliqués à cette chaîne.
Dans cette fonction, la profondeur n’est pas limitée à 1, et je vous conseille d’éviter les expressions contenant trop d’imbrications car le résultat n’est pas forcément très prévisible.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *