Expressions régulières en PHP : qu'est-ce que c'est et pourquoi en a-t-on besoin ?
\n\nLes expressions régulières (regex) sont un outil puissant pour rechercher, remplacer et valider des chaînes de caractères selon un motif. En PHP, elles sont implémentées via un ensemble de fonctions qui permettent au développeur de travailler de manière flexible avec des données textuelles. Pour les débutants, ce sujet peut sembler complexe, mais en pratique, il simplifie considérablement le traitement des formulaires, la validation des emails, l'analyse des URL et bien d'autres tâches.
\n\nDans cet article, nous allons détailler la syntaxe de base des expressions régulières en PHP, examiner les principales fonctions et fournir des exemples clairs pour chacune d'elles.
\n\n1. Bases de la syntaxe des expressions régulières
\n\nUne expression régulière en PHP est une chaîne de caractères délimitée (le plus souvent par une barre oblique /). À l'intérieur de cette chaîne se trouvent des caractères spéciaux (métacaractères) et des caractères ordinaires.
Métacaractères principaux
\n\n- \n
.— n'importe quel caractère, sauf le saut de ligne. \n ^— début de la chaîne. \n $— fin de la chaîne. \n *— zéro ou plusieurs répétitions du caractère précédent. \n +— une ou plusieurs répétitions. \n ?— zéro ou une répétition. \n \\d— n'importe quel chiffre (équivalent à [0-9]). \n \\w— n'importe quelle lettre, chiffre ou tiret bas. \n \\s— n'importe quel caractère d'espacement. \n []— classe de caractères (par exemple, [a-z] — toutes les lettres minuscules latines). \n ()— regroupement. \n
Exemple de motif simple
\n\nSupposons que nous voulions vérifier si une chaîne contient le mot "php". Le motif le plus simple ressemblera à ceci :
\n\n/php/\n\nCe motif trouvera la sous-chaîne "php" à n'importe quel endroit de la chaîne (par exemple, dans "PHP", il ne la trouvera pas car la casse est importante). Pour rendre la recherche insensible à la casse, on utilise le modificateur i :
/php/i\n\nMaintenant, le motif correspondra à "PHP", "Php" et "php".
\n\n2. Fonctions principales pour travailler avec les expressions régulières en PHP
\n\nPHP fournit plusieurs fonctions clés. Examinons les trois plus populaires : preg_match, preg_replace et preg_split.
2.1. preg_match — vérification de correspondance
\n\nLa fonction preg_match vérifie si une chaîne correspond à un motif. Elle retourne 1 si une correspondance est trouvée, et 0 dans le cas contraire. On peut également passer un troisième argument — un tableau dans lequel toutes les correspondances trouvées seront enregistrées.
Exemple : validation d'email
\n\n<?php\n$email = "user@example.com";\n$pattern = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/";\n\nif (preg_match($pattern, $email)) {\n echo "Email valide !";\n} else {\n echo "Email invalide !";\n}\n?>\n\nExplication du motif :
\n- \n
^— début de la chaîne. \n [a-zA-Z0-9._-]+— un ou plusieurs caractères : lettres latines, chiffres, point, tiret bas ou trait d'union. \n @— symbole "arobase" obligatoire. \n [a-zA-Z0-9.-]+— nom de domaine. \n \\.— point échappé. \n [a-zA-Z]{2,}— zone de domaine (au moins 2 lettres). \n $— fin de la chaîne. \n
2.2. preg_replace — remplacement selon un motif
\n\nLa fonction preg_replace recherche les correspondances avec un motif et les remplace par la chaîne spécifiée. C'est particulièrement utile pour nettoyer des données ou formater du texte.
Exemple : suppression de tous les chiffres d'une chaîne
\n\n<?php\n$text = "Mon numéro : 123-456-7890";\n$pattern = "/\\d+/";\n$replacement = "[CHIFFRES]";\n\n$result = preg_replace($pattern, $replacement, $text);\necho $result; // Affichera : "Mon numéro : [CHIFFRES]-[CHIFFRES]-[CHIFFRES]"\n?><