Expressions régulières en PHP avec exemples : en pratique
Les expressions régulières (regex) sont un outil puissant pour rechercher, remplacer et analyser du texte. En PHP, elles sont implémentées via un ensemble de fonctions PCRE (Perl Compatible Regular Expressions). Sans elles, il est difficile d'imaginer la validation de formulaires, l'analyse de logs ou le remplacement de modèles dans des chaînes.
Dans cet article, nous allons étudier les expressions régulières en PHP avec des exemples que vous pourrez immédiatement appliquer dans vos projets. Nous n'approfondirons pas la théorie — seulement la pratique, le code et des scénarios réels.
1. Fonctions principales pour travailler avec les regex en PHP
En PHP, il existe trois fonctions clés qui couvrent 95% des tâches :
preg_match()— recherche de la première correspondance.preg_match_all()— recherche de toutes les correspondances.preg_replace()— remplacement selon un modèle.preg_split()— division d'une chaîne selon un modèle.
Toutes les fonctions nécessitent trois paramètres : le modèle (pattern), la chaîne (subject) et des drapeaux optionnels.
Exemple 1 : Validation d'email
<?php$email = "user@example.com";$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email)) { echo "Email valide";} else { echo "Email invalide";}?>Analysons le modèle : /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/
^— début de la chaîne.[a-zA-Z0-9._%+-]+— un ou plusieurs caractères autorisés.@— littéralement le symbole @.[a-zA-Z0-9.-]+— le nom de domaine.\\.— le point (échappé).[a-zA-Z]{2,}— le domaine de premier niveau (au moins 2 lettres).$— fin de la chaîne.
Exemple 2 : Extraction de tous les liens depuis du HTML
<?php$html = '<a href="https://pythonlib.ru">Site</a> et <a href="/about">À propos</a>';$pattern = '/href="([^"]+)"/';
preg_match_all($pattern, $html, $matches);
print_r($matches[1]); // Affiche un tableau de liens?>Ici, ([^"]+) est un groupe capturant qui recherche tout sauf les guillemets à l'intérieur de l'attribut href.
2. Modificateurs et leur utilisation pratique
Les modificateurs changent le comportement de l'expression régulière. Ils sont placés après la barre oblique fermante (/).
i— recherche insensible à la casse.m— mode multiligne (^ et $ fonctionnent pour chaque ligne).s— le point inclut le saut de ligne.U— mode paresseux (par défaut, gourmand).u— prise en charge de l'UTF-8.
Exemple 3 : Recherche d'un mot sans tenir compte de la casse
<?php$text = "PHP est un langage puissant. php est utilisé partout.";$pattern = "/php/i";
preg_match_all($pattern, $text, $matches);echo count($matches[0]); // Affiche 2?>Exemple 4 : Travailler avec le cyrillique (UTF-8)
<?php$text = "Bonjour le monde !";$pattern = "/[а-яё]+/ui"; // u — UTF-8, i — insensibilité à la casse
preg_match_all($pattern, $text, $matches);print_r($matches[0]); // ['Bonjour', 'le', 'monde']?>Sans le modificateur u, le cyrillique sera mal traité, car PHP considère chaque octet comme un caractère distinct.
3. Remplacement et division de chaînes avec les expressions régulières
La fonction preg_replace() permet de remplacer des parties d'une chaîne selon un modèle. Et preg_split() permet de diviser une chaîne comme explode, mais avec la possibilité d'utiliser une regex.
Exemple 5 : Nettoyage du texte des balises HTML
<?php$html = "<h1>Titre</h1><p>Texte avec un mot en <b>gras</b></p>";$clean = preg_replace("/<[^>]+>/", "", $html);echo $clean; //