Expressions régulières en PHP : un outil puissant pour travailler avec le texte
Les expressions régulières (regex) sont des séquences de caractères définissant un modèle pour la recherche et la manipulation de chaînes. En PHP, elles sont implémentées via la bibliothèque PCRE (Perl Compatible Regular Expressions) et offrent aux développeurs des possibilités flexibles pour la validation de données, l'analyse de texte et le remplacement de sous-chaînes. Dans cet article, nous allons examiner les fonctions principales, la syntaxe et des exemples pratiques d'utilisation des expressions régulières en PHP.
Fonctions PHP principales pour travailler avec les expressions régulières
En PHP, il existe plusieurs fonctions clés qui permettent de travailler avec les expressions régulières. Examinons les plus importantes.
preg_match() — recherche de la première correspondance
La fonction preg_match() recherche la première correspondance avec le modèle dans une chaîne. Elle retourne 1 si une correspondance est trouvée, 0 sinon, et FALSE en cas d'erreur.
<?php$text = "Mon email : example@mail.com et test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "Email trouvé : " . $matches[0]; // Affichera : Email trouvé : example@mail.com}?>preg_match_all() — recherche de toutes les correspondances
Contrairement à preg_match(), cette fonction trouve toutes les correspondances dans une chaîne et les place dans un tableau multidimensionnel.
<?php$text = "Mon email : example@mail.com et test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);print_r($matches[0]);// Affichera : Array ( [0] => example@mail.com [1] => test@domain.org )?>preg_replace() — remplacement selon un modèle
La fonction preg_replace() remplace toutes les correspondances avec le modèle par la chaîne spécifiée. Elle prend en charge les références arrière et les modificateurs.
<?php$text = "Aujourd'hui 15.03.2024, et demain sera 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";
echo preg_replace($pattern, $replacement, $text);// Affichera : Aujourd'hui 2024-03-15, et demain sera 2024-03-16?>preg_split() — division d'une chaîne selon un modèle
La fonction preg_split() divise une chaîne en un tableau selon le modèle spécifié. C'est un analogue de explode(), mais avec le support des expressions régulières.
<?php$text = "pomme, poire; banane : orange";$pattern = "/[,;: ]+/";
$fruits = preg_split($pattern, $text);print_r($fruits);// Affichera : Array ( [0] => pomme [1] => poire [2] => banane [3] => orange )?>Syntaxe des expressions régulières
Les expressions régulières en PHP sont placées entre délimiteurs (généralement des barres obliques /) et peuvent contenir des modificateurs après le délimiteur de fermeture. Examinons les éléments principaux de la syntaxe.
Métacaractères et quantificateurs
- Classes de caractères :
.(n'importe quel caractère),\\d(chiffre),\\w(lettre, chiffre, souligné),\\s(caractère d'espacement) - Quantificateurs :
*(0 ou plus),+(1 ou plus),?(0 ou 1),{n,m}(de n à m) - Ancres :
^(début de chaîne),$(fin de chaîne),\\b(limite de mot) - Groupement :
()(capture de groupe),(?:)(groupe non capturant) - Alternative :
|(OU logique)
Modificateurs de modèles
i— recherche insensible à la cassem— mode multiligne (^ et $ fonctionnent pour chaque ligne)s— le métacaractère . inclut le saut de ligneu— support Unicode (obligatoire pour travailler avec