Bienvenue sur le site des Expressions Régulières Icone page d'accueil - Les expressions régulières php Accueil   Icone articles sur les expressions régulières en php Articles d'Expreg - Billets de Fred   Icone nos regex - Les expressions régulières php Les regex d'Expreg Icone mail - Les expressions régulières php

La fonction ereg (à partir de PHP3)

ereg - eregi

les expressions rationnelles en php La syntaxe :
ereg (motif de chaine, chaine sujet, tableau résultat);

ereg retourne VRAI (true) si une occurence à été trouvée.
ereg est sensible à la casse alors que eregi ne l'est pas.

Si le tableau est fourni, il contiendra les résultats de la recherche :
$tableau[0] contiendra la partie qui satisfait le masque complet
$tableau[1] contiendra la partie qui satisfait la première parenthèse capturante
et ainsi de suite...

Exemples avec ereg(i)



Exemple

 Vérifier si une chaine est un md5 
Niveau de compréhension :facile

<?php
$test="Zorro";
$mdp=md5($test);

if(!ereg("^[a-f0-9]{32}$",$mdp)){
echo "le pass n
'est pas un md5()";
}
else
{
echo "
c'est un md5()";
}

?>


Explication :
Cet exemple va tester une chaîne afin de déterminer si c'est un cryptage md5.
Cette fonction n'offrira peut-être aucun intérêt, mais elle a été demandée sur un forum et je la trouve intéressante comme exemple.

Une chaîne md5() est toujours :
- composée de 32 caractères.
- rien que des chiffres et des lettres.
- lettres uniquement de a à f (en hexa).
- lettres uniquement en bas de casse.


Vous trouverez dans nos sources, catégorie chaînes de caractères, une source identique utilisant la PCRE preg_match et proposée par Fabrice.


Exemple

 Convertir une date format YYYY-MM-DD en format français DD-MM-YYYY 
Niveau de compréhension : moyen

<?php
$date="2003-05-20";
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))
{
echo $regs[3].$regs[2].$regs[1];
}
else
{
echo $date,
' n'est pas un format valide';
}
// la date affichée sera 20-05-2003
?>

Explication :
([0-9]{4}) analyse la première partie de $date pour vérifier qu'elle contient bien des éléments (chiffres) compris entre 0 et 9 et ce, 4 fois de suite soit le nombre 2003.
Vient ensuite le séparateur (tiret -)
([0-9]{1,2}) analyse la seconde partie de $date pour vérifier le mois qui peut être compris entre 1 et 12 ce qui est déterminer grâce au quantificateur {1,2} soit 1 chiffre, soit 2 chiffres successifs.
Vient ensuite le second séparateur (tiret -)
Et enfin :
([0-9]{1,2}) analyse la troisième partie de $date pour vérifier le jour de la même manière que pour le mois.

Cette regex est très simpliste sur un format de date. Elle n'est pas assez restrictive car elle laissera passer des dates du type 0000-00-00 ou 9999-99-99 ce qui est illogique.
D'ailleurs la meilleure façon de contrôler la validité d'une date c'est d'utiliser checkdate()

Mais le but n'est pas de faire une analyse pointue mais simplement de vous montrer le principe de fonctionnement. De même, je ne vais pas approfondir le sujet et multiplier les exemples sur cette fonction qui est moins utilisée que les PCRE.


Exemple

  
Niveau de compréhension :


Explication :


Rédaction Yves Maistriaux :: Mai 2003 Dernière mise à jour :: Décembre 2005


European Cards - Hosting-Ec Validation W3C European Cards - Hosting-Ec Validation W3C © 2003 - 2008 www.expreg.com - Toutes reproductions interdites sans l'autorisation écrite des auteurs
:::::::::: Design an Hosting by : European Cards Sprl ::::::::::