Guide de Débutant sur les Expressions Régulières en PHP
Salut à toi, futur magicien PHP ! Aujourd'hui, nous plongeons dans le monde fascinant des expressions régulières en PHP. Ne t'inquiète pas si tu n'as jamais codé auparavant – je serai ton guide amical dans cette aventure passionnante. C'est parti !
Quelles sont les Expressions Régulières ?
Avant de nous plonger dans les détails spécifiques à PHP, comprendre ce qu'est une expression régulière (regex). Imagine que tu es un détective cherchant un motif spécifique dans un océan de texte. Voilà ce que fait la regex – elle t'aide à rechercher, matcher et manipuler du texte basé sur des motifs. Génial, non ?
Expressions Régulières POSIX
Les expressions régulières POSIX (Interface de Système d'Exploitation Portable) étaient la norme originale pour les regex en PHP. Bien qu'elles ne soient plus aussi couramment utilisées aujourd'hui, comprendre cela peut te donner une bonne base.
Exemple de Regex POSIX de Base
Commençons par un exemple simple :
$text = "Le renard brun rapide saute par-dessus le chien paresseux.";
$pattern = "/rapide/";
if (ereg($pattern, $text)) {
echo "Motif trouvé !";
} else {
echo "Aucun motif trouvé.";
}
Dans cet exemple, nous cherchons le mot "rapide" dans notre phrase. La fonction ereg()
vérifie si le motif correspond n'importe où dans le texte.
Fonctions Regex POSIX en PHP
PHP propose plusieurs fonctions de regex POSIX. Voici un tableau des plus courantes :
Fonction | Description |
---|---|
ereg() | Correspondance d'expression régulière |
eregi() | Correspondance d'expression régulière insensible à la casse |
ereg_replace() | Remplacement d'expression régulière |
split() | Diviser une chaîne en tableau par une expression régulière |
Exemple : Utilisation de eregi() pour une Correspondance Insensible à la Casse
$text = "Le Renard Brun Rapide";
$pattern = "rapide";
if (eregi($pattern, $text)) {
echo "Motif trouvé !";
} else {
echo "Aucun motif trouvé.";
}
Cette fois, nous trouverons un motif même si "Rapide" est capitalisé dans notre texte.
Expressions Régulières de Style PERL
Maintenant, parlons des expressions régulières compatibles PERL (PCRE), plus modernes et puissantes. Ce sont celles que vous utiliserez probablement le plus dans vos projets PHP.
Exemple de Base PCRE
$text = "Le renard brun rapide saute par-dessus le chien paresseux.";
$pattern = "/rapide/";
if (preg_match($pattern, $text)) {
echo "Motif trouvé !";
} else {
echo "Aucun motif trouvé.";
}
Cela ressemble à notre exemple POSIX, mais nous utilisons preg_match()
au lieu de ereg()
.
Fonctions Regex PCRE en PHP
Les fonctions PCRE en PHP sont plus polyvalentes et efficaces. Voici un tableau des fonctions couramment utilisées :
Fonction | Description |
---|---|
preg_match() | Effectuer une correspondance d'expression régulière |
preg_match_all() | Effectuer une correspondance d'expression régulière globale |
preg_replace() | Effectuer une recherche et remplacement d'expression régulière |
preg_split() | Diviser une chaîne par une expression régulière |
Exemple : Utilisation de preg_match_all() pour Trouver Tous les Motifs
$text = "Le renard brun rapide saute par-dessus le rapide chien paresseux.";
$pattern = "/rapide/";
if (preg_match_all($pattern, $text, $matches)) {
echo "Trouvé " . count($matches[0]) . " motifs !";
print_r($matches);
} else {
echo "Aucun motif trouvé.";
}
Ce script trouvera toutes les occurrences de "rapide" dans notre texte et les stockera dans le tableau $matches
.
Techniques Avancées PCRE
Maintenant que nous avons couvert les bases et quelques techniques avancées, regardons quelques-unes des techniques plus avancées.
Métacaractères
Les métacaractères sont des caractères spéciaux en regex qui ont des significations spécifiques. Voici quelques-uns des plus courants :
-
.
: Correspond à n'importe quel caractère sauf le saut de ligne -
^
: Correspond au début d'une chaîne -
$
: Correspond à la fin d'une chaîne -
*
: Correspond à zéro ou plusieurs occurrences -
+
: Correspond à une ou plusieurs occurrences -
?
: Correspond à zéro ou une occurrence
Exemple : Utilisation de Métacaractères
$text = "Le renard brun rapide saute par-dessus le chien paresseux.";
$pattern = "/^Le/";
if (preg_match($pattern, $text)) {
echo "Le texte commence par 'Le'";
} else {
echo "Le texte ne commence pas par 'Le'";
}
Ce script vérifie si notre texte commence par "Le".
Classes de Caractères
Les classes de caractères vous permettent de correspondre à l'un d'un ensemble de caractères. Elles sont entourées de crochets []
.
Exemple : Utilisation de Classes de Caractères
$text = "Le renard brun rapide saute par-dessus le chien paresseux.";
$pattern = "/[aeiou]/i";
if (preg_match_all($pattern, $text, $matches)) {
echo "Trouvé " . count($matches[0]) . " voyelles !";
print_r($matches);
} else {
echo "Aucune voyelle trouvée.";
}
Ce script trouve toutes les voyelles dans notre texte. Le i
à la fin du motif le rend insensible à la casse.
Applications Pratiques
Maintenant que nous avons couvert les bases et quelques techniques avancées, regardons une application dans le monde réel.
Validation d'une Adresse Email
$email = "[email protected]";
$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email)) {
echo "Adresse email valide !";
} else {
echo "Adresse email invalide !";
}
Ce script utilise un motif regex complexe pour valider une adresse email. Il vérifie :
- Un ou plusieurs lettres, nombres, points, soulignés, pourcents, plus ou tirets avant le @
- Un ou plusieurs lettres, nombres, points ou tirets après le @
- Un point suivi de deux ou plusieurs lettres à la fin
Conclusion
Félicitations ! Tu viens de faire tes premiers pas dans le monde des expressions régulières en PHP. Souviens-toi, la regex est un outil puissant, mais elle peut aussi être complexe. La clé est la pratique – plus tu l'utilises, plus tu seras à l'aise.
En continuant ton parcours en PHP, tu trouveras la regex incroyablement utile pour des tâches comme la validation de formulaires, l'analyse de données et la manipulation de texte. Continue d'explorer, continue de coder, et surtout, amuse-toi !
Credits: Image by storyset