Rechercher : dans
Par :

Expression reguliere - PHP

Dernière réponse le 17 jui 2007 à 13:55:12 Moriar, le 17 jui 2007 à 11:37:51 
 Signaler ce message aux modérateurs

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)) {
Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « Expression reguliere PHP » dans :
PHP - Expressions régulières Voir Qu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
[RegExp] Récupérer une adresse IP VoirFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

Jeff, le 17 jui 2007 à 11:50:59

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)) {
}

Jeff - Wm@Ccm -

Répondre à Jeff

2

Moriar, le 17 jui 2007 à 12:24:52

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.

Répondre à Moriar

3

Reivax962, le 17 jui 2007 à 12:49:28

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...

Répondre à Reivax962

4

Jeff, le 17 jui 2007 à 13:18:15

Je pense savoir, remplace substr($telefon, 1 ,5) par substr($telefon, 0 ,5) Jeff - Wm@Ccm -

Répondre à Jeff

5

Jeff, le 17 jui 2007 à 13:19:44

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)) {
}
Jeff - Wm@Ccm -

Répondre à Jeff

6

 Moriar, le 17 jui 2007 à 13:55:12

[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.

Répondre à Moriar