Expréssions régulières
Les expressions régulières en PHP
Fonction preg_match()
La fonction preg_match() recherche dans une chaîne les séquences de caractères qui correspondent au masque, comme par exemple, ([0-9]{4}) qui recherche une séquence de 4 chiffres.
Syntaxe: preg_match(expression régulière, chaîne, [sortie]);
Les résultats seront enregistés dans le troisième argument $result_Pattern. $result_Pattern[1] contiendra la première parenthèse capturante, $regs[2] la deuxième et ainsi de suite. L'indice 0 du tableau $result_Pattern contient la variable de départ.
<html>
<body>
<?php
$maDate = date("m-d-Y");
$pattern = '/^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})/'; // création du modèle
// le modèle ($pattern) permet de découper la variable $maDate en différente parties stockées dans un tableau ($result_Pattern)
if(preg_match($pattern, $maDate, $result_Pattern)) {
echo 'Date de départ : '.$result_Pattern[0].'
'; // l'indice 0 du tableau contient l'origine de la variable
echo 'Date transformée : '.$result_Pattern[2].'/'.$result_Pattern[1].'/'.$result_Pattern[3];
}
// Exercice réalisé avec la promo DWWM 2021 le 9 mars 2021
?>
</body></html>
L'expression régulière reproduit le format de base recherché : 2 bloc de 1 ou 2 chiffres de 0 à 9, soit ([0-9]{1,2}) suivit d'1 bloc de 4 chiffres de 0 à 9, soit ([0-9]{4}).
"$result_Pattern[x]" permet d'appeler et d'écrire ces 3 blocs avec un formatage précis.
La fonction preg_match récupère une chaîne ($page) dans une variable de type Array ($regs) en la découpant suivant le code spécifié ("([a-z]*)/([a-z]*)). L'idée est de récupérer le contenu d'une variable (ici $page) qui contient le chemin de la page affichée, soit "langage/php_10". On transforme ensuite cette variable et on l'affiche dans la barre des titres du navigateur. Vous pouvez voir une adaptation Easy-Micro de ce script dans la barre des titres de votre navigateur (la haut!).
<?php
$codepostal = $_POST['codepostal'];
if ( ($codepostal != "") && (!preg_match("/^[0-9]{5}/",$codepostal)) ) {
echo "Votre code postal doit être composé de 5 chiffres.";
}
else {
echo "toutivabene !";
}
Note: code à saisir dans un fichier de traitement de formulaire après récupération du contenu d'un champ de code postal dans une variable $codepostal (via la variable superglobale $_POST[])
Fonction ereg()
⚠ Attention : L'ancienne fonction ereg est obsolète depuis PHP 7.3