slam:aide_preg_match

Site web officiel php.net

Les expressions régulières

Les expressions régulières (ou rationnelles) vont permettre de définir de manière concise la forme d'une chaine de caractères attendue (un patron ou modèle) et de la confronter à une chaine de caractères donnée.

On peut par exemple utiliser une expression régulière pour :

  • Contrôler qu'un mot de passe saisi comprend au moins 8 caractères et dispose à la fois de chiffres, de majuscules, de minuscules et de caractères spéciaux.
  • Extraire d'une chaine de caractères toutes les sous-chaines dont le format est conforme au modèle défini

Les expressions régulières existent dans de nombreux langages informatiques ainsi que dans les langages de scripting.

Nous allons voir comment les définir en PHP.

Cette fonction vérifie si un texte correspond au modèle décrit dans une expression régulière, et retourne un booléen.

Syntaxe utilisée ici :

preg_match ( string $pattern , string $subject);

$subject : chaine de caractères à tester $pattern : format souhaité pour la chaine de caractères

Exemple d'utilisation :

if (preg_match('#Castel#', 'J aime le lycée Le Castel!')) {
        echo ('Le mot Castel est cité);
} else {
        echo ("Le mot Castel n'est pas cité");
       }

Ce code cherche la présence de la chaîne de caractères « Castel» dans la phrase 'J aime le lycée Le Castel!'

Autres possibilités : au lieu de #Castel#, on aurait pu écrire :

  • '#CASTEL#i ' le mot pourra être en majuscule ou en minuscule
  • '#Castel|php#' vrai si Castel ou php est présent dans la chaine de caractères
  • '#php$#' vrai si php est à la fin de la chaine
  • '#^php#' vrai si php est au début de la chaine
  • '#gr[iao]s#' vrai pour gris, gras, gros
  • '#gr[a-z]s#' vrai pour gr, puis n'importe quelle lettre, puis s
  • '#gr[a-z1-9]s#' vrai pour gr, puis n'importe quelle lettre ou chiffre, puis s
  • '#gr[^1-9]s#' vrai pour gr, puis tt caractère sauf un chiffre, puis s
  • '#Cas?tel#' ? : la lettre qui précède peut être présente 0 ou une fois
  • '#Cas+tel#' + : la lettre qui précède peut être présente une ou plusieurs fois
  • '#Cas*tel#' * : la lettre qui précède peut être présente 0, une ou plusieurs fois
  • '#Cas{3}tel#'
    • {3} : la lettre qui précède doit être présente 3 fois
    • {3,} : la lettre qui précède doit être présente au moins 3 fois
    • {0,3} : la lettre qui précède doit être présente au plus 3 fois
    • {3,5} : la lettre qui précède doit être présente au moins 3 fois, au plus 5 fois
  • '#Ca(st)?el#' les lettres st pourront être présentes 0 ou 1 fois : les () permettent de
  • faire le test des quantités sur plusieurs caractères
  • '#Castel[1-9]?#' Castel suivi de 0 ou 1 chiffre
  • '#Castel \?#' Castel suivi du point d'interrogation, \ est le caractère d'échappement
  • '#^fin$#' Chaine qui commence par f, suivi d'un i et se termine par n

Les symboles ^ et $ indiquent le début et la fin d'une chaîne, et permettent donc de la délimiter.

Quelques raccourcis permettent d'écrire ces formules plus rapidement :

  • \d Indique un chiffre. Identique à [0-9]
  • \D Indique ce qui n'est PAS un chiffre = [^0-9]
  • \w Indique un caractère alphanumérique ou un tiret de soulignement = [a-zA-Z0-9_]
  • \W Indique ce qui n'est PAS un mot = [^a-zA-Z0-9_]
  • \t Indique une tabulation
  • \n Indique une nouvelle ligne
  • \r Indique un retour chariot
  • \s Indique un espace blanc
  • \S Indique ce qui n'est PAS un espace blanc (\t \n \r)
  • slam/aide_preg_match.txt
  • Dernière modification : 2025/02/06 09:15
  • de dthevenot