Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

PHP et les expressions régulières

Dans le cadre du contrôle de saisie "côté serveur" il faut vérifier si l'adresse mail saisie à un format correct, si le mot de passe saisi correspond au gabarit exigé, si les numéros de téléphone comprennent bien 10 chiffres, etc.
Concrétement chaque saisie est comparée à une expression régulière ou "regexp".

La fonction preg_match()

Pour vérifier si une saisie coïncide avec une regexp il faut utiliser la fonction preg_match()

Construire une expression régulière

En PHP une regexp doit être délimitée par des # ; le # final peut être suivi d'une option.

Exemple 1

Le code du document PHP (extrait)

Pour la dernière regexp notez l'emploi des symboles ^ et $ respectivement en début et fin de regexp ; la chaine qui lui est comparée doit coïncider strictement avec la regexp, ni plus ni moins.

Le rendu

Les classes et les quantificateurs

Les expressions régulières complexes sont une suite de paires classe - quantificateur

Les classes

Dans une regexp une classe est délimitée par des crochets.
À l'intérieur des crochets une suite de caractères autorisé et/ou un intervalle.

le ^ en début de classe signifie la négation. Ne confondez pas avec le ^ en début de regexp.

Les quantificateurs

Dans un regexp un quantificateur est entre accolades.
Un quantificateur indique le nombre de caractères autorisés.

Attention les symboles ? # ^ $ . sont utilisés dans la syntaxe des regexp. On les appelle les métacaractères.
Donc si vous les utilisez dans une classe il faut les échapper.

Exemple 2

Le code du document PHP (extrait)

Le rendu

Examinons quelques regexp

#[0-9 ]# : caractères autorisés : chiffres et espace.
#[A-zéè0-9: ]# : caractères autorisés : lettres dont lettres accentuées, chiffres, : et espace.

Dans les deux dernières instructions je compare le mot de passe "Sesame$59" successivement aux regexp #[A-z0-9\?\!\$\]{8,12]# puis #[A-Z]{0,1}[a-z]{5,}[0-9]{2,}[\?\!\$\#]{1}#.
Le premier test retourne "mot de passe valide" et le deuxième "mot de passe invalide".
En effet le premier regexp n'impose par d'ordre : entre 8 et 12 lettre, chiffres et métacaractères.
Le deuxième regexp impose un ordre : une lettre Majuscule (facultatif), au moins 5 lettres minuscules, au moins deux chiffres puis un métacaractère.

Contrôle de saisie PHP des données soumissionnées

Ci-dessous le code d'un document PHP

La feuille de style interne

	input:valid {color : lime;}
	input:invalid {color : red;}

Si le contenu d'un champ correspond à son pattern alors il passe au vert.

Le code du formulaire

Le contrôle de saisie 'côté navigateur' se limite ici aux attributs pattern