Page 1 sur 1
rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 13:28
par bfabrice64
Bonjour,
pourriez vous m'aider à trouver la bonne expression régulière qui permette de rechercher dans un fichier tous les nombres de 10 chiffres qui commencent par 0302
Voilà ce que j'ai en stock pour l'instant:
le bur c'est de les extraire du fichier et de les transferer ver s un fichier texte.
$page="monfichier_qui_vient_dun_formulaire";
$nombre = eregi("^0302[0-9-]{10,10}",$page,$regs);
echo $regs[1];
fclose($fp);
et ça marche pas...
merci pour les conseils...
bfabrice
Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 13:41
par Ryle
Le 0302 est-il inclut dans les dix chiffres ou bien est-ce un nombre à 14 chiffres ?
A noter que le ^ dans un masque d'expression régulière correspond au début de la chaine que tu traites, donc si ta variable $page ne commence pas par 0302, mais que cette chaine se trouve au milieu, elle ne correspondra pas à ton masque.
Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 13:48
par bfabrice
oui le 0302 est inclus, cad que je cherche des chaines de type 030254687 bla bla bla 0302689787 bla bla bla
et non la chaine ne commence pas par 0302 mais par bla bla bla ...
j'aimerais trier ces nombres et les récuperer dans un fichier ( mais ça je peux faire ) genre 0302546987;0302778899;etc,
Merci
bfabrice
Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 13:51
par xTG
Dans ce cas il te faut bien enlever le ^ car ton nombre ne se trouve pas forcement en début de chaîne.

Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 13:55
par bfabrice
Ca marche toujousr pas avec :
$page="monfichier_qui_vient_dun_formulaire";
$nombre = eregi("0302[0-9-]{10,10}",$page,$regs);
echo $regs[1];
et je vois pas d'ou ça peut venir , est ce que ma formule est bonne?
Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 14:02
par Ryle
Ton deuxième problème à lié à ton {10,10} qui s'applique uniquement à l'expression qui le précède, c'est à dire au [0-9-]. il cherche donc une chaine de 14 caractères (les 4 premiers 0302, puis 10 caractères de 0 à 9 ou "-")

Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 14:20
par bfabrice
merci mais j'ai essayé avec
$page="monfichier_qui_vient_dun_formulaire";
$nombre = eregi("0302[0-9-]{6,6}",$page,$regs);
echo $regs[1];
et ça marche toujours pas...
Est ce que c'est lié aux nombres qui peuvent être espacés ( 0 2 0 3 6 6 6 6 6 6) ?
merci
Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 15:09
par Ryle
C'est effectivement lié
Ton masque doit représenter précisément la chaine que tu recherches... donc s'il y a des espaces dans ta chaine mais que ton masque ne les prends pas en compte, php considérera que la chaine trouvée ne correspond pas puisqu'elle ne respecte pas le masque et poursuivra sans s'arrêter.
Il faut donc bien inclure la notion d'espaces dans ton masque. De même si les espaces ne sont pas systématiques ou peuvent être doublés, triplés, etc., il faut également l'indiquer à php... Toi masque doit pouvoir s'appliquer parfaitement à chacune des chaines que tu cherches à récupérer

Re: rechercher un nombre avec une expression régulière
Posté : 12 févr. 2011, 19:06
par Aureusms
Je suis pas expert mais je me lance :
$regex = "03-?[ ]?02[-0-9 ]{6,10}";