rechercher un nombre avec une expression régulière

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : rechercher un nombre avec une expression régulière

Re: rechercher un nombre avec une expression régulière

par Aureusms » 12 févr. 2011, 19:06

Je suis pas expert mais je me lance :
$regex = "03-?[ ]?02[-0-9 ]{6,10}";

Re: rechercher un nombre avec une expression régulière

par Ryle » 12 févr. 2011, 15:09

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

par bfabrice » 12 févr. 2011, 14:20

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

par Ryle » 12 févr. 2011, 14:02

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

par bfabrice » 12 févr. 2011, 13:55

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

par xTG » 12 févr. 2011, 13:51

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

par bfabrice » 12 févr. 2011, 13:48

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

par Ryle » 12 févr. 2011, 13:41

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.

rechercher un nombre avec une expression régulière

par bfabrice64 » 12 févr. 2011, 13:28

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