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

Qu’est-ce que l’expression régulière en PHP ?

Expression régulière PHP également connus sous le nom de regex, il s'agit d'un puissant algorithme de correspondance de modèles qui peut être exécuté dans une seule expression. Les expressions régulières utilisent des opérateurs arithmétiques tels que (+,-,^) pour créer des expressions complexes. Ils peuvent vous aider à accomplir des tâches telles que la validation des adresses e-mail, de l'adresse IP, etc.

Pourquoi utiliser des expressions régulières

  • Les expressions régulières PHP simplifient l'identification des modèles dans les données de chaîne en appelant une seule fonction. Cela nous fait gagner du temps de codage.
  • Lors de la validation des entrées utilisateur telles que l'adresse e-mail, les noms de domaine, les numéros de téléphone, 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 a des fonctions intégrées qui nous permettent de travailler avec des fonctions régulières que nous apprendrons dans ce didacticiel sur les expressions régulières PHP. Examinons les fonctions d'expression régulière couramment utilisées en PHP.

  • preg_match() en PHP – cette fonction est utilisée pour effectuer une correspondance de modèles en PHP sur une chaîne. Il renvoie vrai si une correspondance est trouvée et faux si aucune correspondance n'est trouvée.
  • preg_split() en PHP – cette fonction est utilisée pour effectuer une correspondance de modèle sur une chaîne, puis diviser les résultats dans 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 PHP preg_match(), PHP preg_split() ou PHP preg_replace().

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

ICI,

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

Examinons maintenant des exemples pratiques qui implémentent les fonctions regex PHP ci-dessus.

Preg_match() en PHP

Le premier exemple utilise la fonction preg_match() dans PHP pour effectuer une simple correspondance de modèle pour le mot gourou dans une URL donnée.

Le code ci-dessous montre l'implémentation de la fonction de testeur 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";
}
?>

Accédez à l'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 sortie "preg_match('/gourou/', $mon_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.

Le schéma ci-dessous résume les points ci-dessus

PHP Preg_split()

Regardons maintenant un autre exemple qui utilise la fonction preg_split() dans PHP.

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 );

?>

Accédez à l'URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Regardons maintenant preg_replace() dans 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 un magnifique.

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;

?>

En supposant que vous ayez enregistré le fichier preg_replace.php, navigateur à l'URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

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

Les exemples ci-dessus utilisaient des modèles très basiques ; les métacaractères nous permettent simplement d'effectuer des correspondances de modèles plus complexes, comme tester la validité d'une adresse e-mail. Examinons maintenant les métacaractères 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 au motif à la fin de la chaîne /com$/ correspond à guru99.com,yahoo.com Etc.
* Correspond à zéro (0) caractère ou plus /com*/ correspond à un ordinateur, une communication, etc.
+ Nécessite que les caractères précédents apparaissent au moins une fois /ouais+oo/ correspond à Yahoo
\ Utilisé pour échapper aux méta-caractères /yahoo+\.com/ traite le point comme une valeur littérale
[...] Classe de personnage /[abc]/ correspond à abc
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.

Regardons maintenant un exemple assez complexe permettant de vérifier la validité d'une adresse email.

<?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";
}
?>

Expliquer le modèle « [/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] »

ICI,

  • « '/…/' » commence et termine l'expression régulière
  • « ^[a-zA-Z0-9._-] » correspond à toutes les lettres minuscules ou majuscules, aux chiffres compris entre 0 et 9 et aux points, traits de soulignement ou 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 à l'aide de la barre oblique inverse, puis fait correspondre toutes les lettres minuscules ou majuscules avec une longueur de caractères comprise entre 2 et 5 à la fin de la chaîne.

Accédez à l'URL http://localhost/phptuts/preg_match.php

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

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

Résumé

  • Une expression régulière ou Regex en PHP est un algorithme de correspondance de modèle
  • Les expressions régulières sont très utiles lors de l'exécution de contrôles de validation, de la création de systèmes de modèles HTML reconnaissant les balises, etc.
  • PHP a des fonctions intégrées, à savoir PHP preg_match(), PHP preg_split() et PHP preg_replace() qui prennent en charge les expressions régulières.
  • Les métacaractères nous permettent de créer des modèles complexes