Expression reguliere - PHP

Résolu
Moriar -  
 Moriar -
Bonjour !

Je bloque actuellement sur quelques chose d'assez important en PHP.
Il me faut (pour un stage) identifier (en php) les chaines de caractere de la forme suivante : dd/dd

J'ai donc essayé plusieurs expressions régulieres mais aucune ne donne le résultat souhaité, pourriez-vous m'aider ?

L'expression que je trouve la plus logique est celle-ci : ^[:digit:]{2}\/[:digit:]{2}$

Pour plus de précision voici un bout de mon code :

$telefon_date = substr($telefon, 1 ,5);
if(ereg("^[:digit:]{2}\/[:digit:]{2}$", $telefon_date)) {
A voir également:

6 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Essaye plutôt avec la fonction preg_match(), elle est réputée beaucoup moins consommatrice de ressource et je trouve personnellement sont comportement plus cohérent :

$telefon_date = substr($telefon, 1 ,5);
if(preg_match("#^[:digit:]{2}\/[:digit:]{2}$#", $telefon_date)) {
}


Sinon tu peux aussi faire ceci :


$telefon_date = substr($telefon, 1 ,5);
if(preg_match("#^[0-9]{2}\/[0-9]{2}$#", $telefon_date)) {
}

0
Moriar
 
Ca n'a pas l'air de fonctionner.

Mais je crois savoir d'où ça vient. La chaine que j'analyse est stoquée en tant que varchar dans ma BDD. les deux premier caractere ne sont donc peut être pas considéré comme des nombres ?

J'avoue que je ne maitrise pas vraiment le typage en sql et en php.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Les expressions rationnelles ne s'appliquent que sur des chaînes de caractère, il n'y a pas de problèmes de typage possible.

Je te conseille d'essayer de tester ton expression par petits bouts, histoire de voir à quel endroit ça bloque...
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Je pense savoir, remplace substr($telefon, 1 ,5) par substr($telefon, 0 ,5)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
d'ailleurs tu n'as pas besoin du substr :


if(preg_match("#^[0-9]{2}\/[0-9]{2}#", $telefon_date)) {
}


Si jamais ton numéro commence à partir du second caractère :

if(preg_match("#^.[0-9]{2}\/[0-9]{2}#", $telefon_date)) {
}
0
Moriar
 
[quote]Je pense savoir, remplace substr($telefon, 1 ,5) par substr($telefon, 0 ,5) [/quote]

Effectivement ça change tout je m'étais trompé sur les parametres du substr, maintenant ça marche trés bien.

Merci beaucoup pour vôtre aide.
0