Expression reguliere - PHP

Résolu/Fermé
Moriar - 17 juil. 2007 à 11:37
 Moriar - 17 juil. 2007 à 13:55
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
17 juil. 2007 à 11:50
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
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
17 juil. 2007 à 12:49
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
17 juil. 2007 à 13:18
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
17 juil. 2007 à 13:19
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
[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