Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
La fonction ereg (à partir de PHP3)
ereg - eregi
La syntaxe :ereg (motif de chaîne, chaîne sujet, tableau résultat);
ereg retourne VRAI (true) si une occurrence à é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 chaîne est un md5
Niveau de compréhension :facile
$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
$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:
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éterminé grâce au quantificateur {1,2} soit 1 chiffre ou 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.
