PHP preg_match() : expressions régulières (Regex)

⚡ Résumé intelligent

Les expressions régulières en PHP sont des outils de correspondance de motifs qui permettent de valider, de découper et de remplacer du texte en une seule expression. Ce guide aborde les fonctions principales `preg_match`, `preg_split` et `preg_replace`, explique les métacaractères courants et construit pas à pas un modèle de validation d'adresse e-mail fonctionnel.

  • 🧩 Qu'est-ce qu'une expression régulière ? Une expression régulière est un modèle qui décrit un texte, permettant à une fonction de valider, de rechercher ou de transformer des chaînes de caractères.
  • correspondance_preg : La fonction preg_match teste si un motif apparaît dans une chaîne de caractères et renvoie vrai lors de la première occurrence, ce qui est idéal pour la validation.
  • ✂️ grossesse_séparée : preg_split divise une chaîne de caractères en un tableau à chaque occurrence du motif, par exemple en divisant une phrase en fonction des espaces.
  • (I.e. preg_replace : preg_replace trouve chaque occurrence d'un motif et la remplace par un nouveau texte, utile pour la création de modèles et la mise en évidence.
  • 🔤 Métacaractères : Des symboles comme ., ^, $, * et + permettent de construire des motifs complexes, par exemple en ancrant une correspondance au début ou à la fin.
  • 📧 Modèle d'e-mail : Les classes de caractères et les quantificateurs se combinent en un seul modèle qui vérifie si une adresse électronique est bien formée.
  • 🤖 Assistance IA : Les outils d'IA peuvent générer une expression régulière à partir d'une simple description et expliquer ou déboguer un modèle complexe existant.

Expressions régulières PHP

Qu'est-ce qu'une expression régulière en PHP ?

Expressions régulières PHPLes expressions régulières, également appelées regex, sont un outil puissant de correspondance de modèles qui peut être réalisé en une seule expression. Elles utilisent des caractères spéciaux tels que +, - et ^ pour créer des expressions complexes. Elles peuvent vous aider à accomplir des tâches comme la validation d'adresses e-mail, d'adresses IP, etc.

Pourquoi utiliser des expressions régulières

  • Les expressions régulières PHP simplifient l'identification des motifs dans les chaînes de caractères en appelant une seule fonction, ce qui nous fait gagner du temps de programmation.
  • Lors de la validation des données saisies par l'utilisateur, telles que les adresses électroniques, les noms de domaine, les numéros de téléphone et les adresses IP
  • Mettre en évidence des mots-clés dans les résultats de recherche
  • Lors de la création d'un modèle HTML personnalisé. Regex en PHP peut être utilisé pour identifier les balises de modèle et les remplacer par des données réelles.

Fonctions d'expression régulière intégrées en PHP

PHP intègre des fonctions permettant de manipuler les expressions régulières, que nous allons découvrir dans ce tutoriel. Examinons les fonctions d'expressions régulières les plus couramment utilisées en PHP.

  • La fonction `preg_match()` en PHP permet de rechercher un motif dans une chaîne de caractères. Elle renvoie `true` si une correspondance est trouvée et `false` dans le cas contraire.
  • preg_split() en PHP – cette fonction est utilisée pour effectuer une correspondance de motif sur une chaîne de caractères, puis diviser les résultats en un tableau numérique.
  • preg_replace() en PHP – cette fonction est utilisée pour effectuer une correspondance de modèle sur une chaîne, puis remplacer la correspondance par le texte spécifié.

Vous trouverez ci-dessous la syntaxe d'une fonction d'expression régulière telle que preg_match(), preg_split() ou preg_replace().

<?php
function_name('/pattern/',subject);
?>

ICI,

  • « function_name(…) » est soit preg_match(), preg_split(), soit preg_replace().
  • « /…/ » : les barres obliques indiquent le début et la fin de notre expression régulière.
  • « '/pattern/' » est le modèle que nous devons faire correspondre
  • « sujet » est la chaîne de texte à comparer

Examinons maintenant des exemples pratiques qui mettent en œuvre les fonctions regex PHP ci-dessus.

Preg_match() en PHP

Le premier exemple utilise la fonction preg_match() pour effectuer une simple correspondance de motif pour le mot guru dans un texte donné. URL.

Le code ci-dessous illustre l'implémentation de la fonction preg_match() pour l'exemple ci-dessus.

<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>

Naviguez vers le URL http://localhost/phptuts/preg_match_simple.php

Fonctions d'expression régulière intégrées

Examinons la partie du code responsable de notre résultat. preg_match('/guru/', $my_url). ICI,

  • "preg_match(…)" est la fonction regex PHP
  • « '/guru/' » est le modèle d'expression régulière à faire correspondre
  • « $my_url » est la variable contenant le texte à comparer.

PHP Preg_split()

Examinons maintenant un autre exemple qui utilise la fonction preg_split().

Nous allons prendre une phrase de chaîne et la décomposer en un tableau ; le motif à faire correspondre est un espace unique.

La chaîne de texte à utiliser dans cet exemple est « I Love Regular Expressions ».

Le code ci-dessous illustre l'implémentation de l'exemple ci-dessus.

<?php

$my_text = "I Love Regular Expressions";

$my_array = preg_split("/ /", $my_text);

print_r($my_array );

?>

Naviguez vers le URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Examinons maintenant la fonction preg_replace() Fonction PHP qui effectue une correspondance de modèle, puis remplace le modèle par autre chose.

Le code ci-dessous recherche le mot gourou dans un string.

Il remplace le mot « gourou » par le mot « gourou » entouré de code CSS qui met en évidence la couleur de fond.

<?php

$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";

$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);

echo $text;

?>

Si vous avez enregistré le fichier preg_replace.php, accédez à URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Métacaractères d'expression régulière

Les exemples précédents utilisaient des modèles très simples. Les métacaractères permettent d'effectuer des correspondances plus complexes, comme la vérification de la validité d'une adresse électronique. Examinons maintenant les métacaractères les plus couramment utilisés.

Métacaractère Description Exemple
. Correspond à n'importe quel caractère, à l'exception d'une nouvelle ligne /./ correspond à tout ce qui a un seul caractère
^ Correspond au début d'une chaîne ou exclut les caractères /^PH/ correspond à n'importe quelle chaîne commençant par PH
$ Correspond à un motif à l'extrémité de la chaîne /com$/ correspond à guru99.com, yahoo.com, etc.
* Correspond à zéro ou plusieurs des caractères précédents /com*/ correspond à un ordinateur, une communication, etc.
+ Exige que le ou les caractères précédents apparaissent au moins une fois. /ouais+oo/ correspond à Yahoo
\ Utilisé pour échapper aux métacaractères /yahoo+\.com/ traite le point comme une valeur littérale
[...] Classe de personnage /[abc]/ correspond à a, b ou c
AZ Correspond aux lettres minuscules /az/ correspond à cool, happy etc.
A-Z Correspond aux lettres majuscules /AZ/ correspond à QUOI, COMMENT, POURQUOI, etc.
0-9 Correspond à n'importe quel nombre entre 0 et 9 /0-4/ correspond à 0,1,2,3,4

La liste ci-dessus ne donne que les métacaractères les plus couramment utilisés dans les expressions régulières.

Examinons maintenant un exemple assez complexe qui vérifie la validité d'une adresse électronique.

<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>

Explication du modèle de validation des adresses e-mail

ICI,

  • « /…/ » encadre l'expression régulière.
  • « ^[a-zA-Z0-9._-] » correspond à toutes les lettres minuscules ou majuscules, aux chiffres entre 0 et 9, ainsi qu’aux points, aux traits de soulignement ou aux tirets.
  • « +@[a-zA-Z0-9-] » correspond au symbole @ suivi de lettres minuscules ou majuscules, de chiffres entre 0 et 9 ou de tirets.
  • “+\.[a-zA-Z.]{2,5}$/” échappe le point en utilisant la barre oblique inverse, puis correspond à toutes les lettres minuscules ou majuscules avec une longueur de caractère comprise entre 2 et 5 à la fin de la chaîne.

Naviguez vers le URL http://localhost/phptuts/preg_match.php

Modèle de validation d'email PHP

Comme vous pouvez le constater dans le tableau ci-dessus, les métacaractères sont très puissants lorsqu'il s'agit de faire correspondre des modèles.

FAQ

La fonction `preg_match` s'arrête à la première occurrence et remplit `$matches` avec ce résultat. La fonction `preg_match_all` trouve toutes les occurrences dans la chaîne et les renvoie toutes dans un tableau imbriqué, ce qui convient à…tracting les éléments répétés.

Les modificateurs suivent le délimiteur de fermeture et modifient le comportement de correspondance. Le modificateur i rend le modèle insensible à la casse, m traite chaque ligne séparément pour ^ et $, et s permet au point de correspondre aux sauts de ligne, comme dans /guru/i.

Encadrez les parties du motif entre parenthèses pour créer des groupes de capture. Après preg_match, la correspondance complète se trouve dans $matches[0] et chaque groupe suit dans $matches[1], $matches[2], etc.

Oui. Décrivez le texte à faire correspondre, comme un numéro de téléphone ou un format de date, et l'IA générera le modèle ainsi qu'un exemple de correspondance. Testez-le avec des données réelles et des cas limites avant de vous y fier.

Oui. Collez le modèle, et l'IA peut le décomposer jeton par jeton, expliquer à quoi chaque partie correspond, et indiquer pourquoi il échoue sur certaines entrées, puis suggérer une version corrigée.

Résumez cet article avec :