Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
615 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme d'une simple expression reguliere [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme d'une simple expression reguliere [RESOLU]

n°860101
Profil sup​primé
Posté le 29-09-2004 à 15:35:10  answer
 

J'ai fait un script pour retourner l'age du client à partir d'une date de naissance en ("yyyy-mm-dd" ) ou d'un timestamp.
 
La regexp pour verifier que la date ai un bon format fonctionne parfaitement, pourtant pour verifier que mon timestamp fait bien 9 chiffres, le truc bug, et si je met un timestamp de x chiffre ca merdera mais ca mettra pas l'erreur.
 
La source peu etre vue ici : http://if-faw.com/meltingArt/functions/returnAge.php
 
Merci de votre aide, je suis sur que c'est rien du tout, pourtant quand j'ai tester dans REtester ca met bien un erreure


Message édité par Profil supprimé le 29-09-2004 à 15:59:45
mood
Publicité
Posté le 29-09-2004 à 15:35:10  profilanswer
 

n°860107
simogeo
j'ai jamais tué de chats, ...
Posté le 29-09-2004 à 15:41:56  profilanswer
 

Code :
  1. elseif (!preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/", $dateNaiss))


 
?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°860110
kalex
Posté le 29-09-2004 à 15:43:13  profilanswer
 

Pourquoi ne pas utiliser simplement \d{9} ?

n°860114
Profil sup​primé
Posté le 29-09-2004 à 15:46:38  answer
 

simogeo a écrit :

Code :
  1. elseif (!preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/", $dateNaiss))


 
?

??

n°860116
Masenko
Posté le 29-09-2004 à 15:47:07  profilanswer
 

Voici une source qui fonctionne parfaitement essaye de comparer au tient :)
 

Code :
  1. function age($date)
  2. {
  3.     if (ereg("([0-9]{4})([0-9]{2})([0-9]{2})", $date, $regs))
  4.     {
  5.         $age = floor((date("Ymd" )-intval($date))/10000);
  6.         if ($age < 0)
  7.         {
  8.             echo "<b>Logic error:</b> Cette date de naissance est futuriste.<br />\n";
  9.             return FALSE;
  10.         }
  11.         return $age." an".($age == 1 ? "" : "s" );
  12.     }
  13.     echo "<b>Parse error:</b> Argument incorrect pour age(). Attendu : 'AAAAMMJJ'<br />\n";
  14.     return FALSE;
  15. }

n°860117
Profil sup​primé
Posté le 29-09-2004 à 15:47:47  answer
 

kalex a écrit :

Pourquoi ne pas utiliser simplement \d{9} ?

le probleme n'est pas le [0-9], ben que j'ai maintenant mis \d, mais le {9} qui ne fonctionne pas

n°860120
Profil sup​primé
Posté le 29-09-2004 à 15:48:29  answer
 

masenko a écrit :

Voici une source qui fonctionne parfaitement essaye de comparer au tient :)
 

Code :
  1. function age($date)
  2. {
  3.     if (ereg("([0-9]{4})([0-9]{2})([0-9]{2})", $date, $regs))
  4.     {
  5.         $age = floor((date("Ymd" )-intval($date))/10000);
  6.         if ($age < 0)
  7.         {
  8.             echo "<b>Logic error:</b> Cette date de naissance est futuriste.<br />\n";
  9.             return FALSE;
  10.         }
  11.         return $age." an".($age == 1 ? "" : "s" );
  12.     }
  13.     echo "<b>Parse error:</b> Argument incorrect pour age(). Attendu : 'AAAAMMJJ'<br />\n";
  14.     return FALSE;
  15. }



cette partie fonctionne chez moi :jap: ( a ma sauce j'entend)
 
le probleme vient du timestamp

n°860126
simogeo
j'ai jamais tué de chats, ...
Posté le 29-09-2004 à 15:51:54  profilanswer
 


 
 :sweat:  pardon ...
 
et sans les parentheses ?
 

Code :
  1. if (preg_match("/[0-9]{9}/", $dateNaiss))
  2.         $dateNaiss = date("Y-m-d", $dateNaiss);



Message édité par simogeo le 29-09-2004 à 15:52:14

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°860128
Profil sup​primé
Posté le 29-09-2004 à 15:52:30  answer
 

simogeo a écrit :

:sweat:  pardon ...
 
et sans les parentheses ?
 

Code :
  1. if (preg_match("/[0-9]{9}/", $dateNaiss))
  2.         $dateNaiss = date("Y-m-d", $dateNaiss);



pareil :jap:

n°860130
kalex
Posté le 29-09-2004 à 15:53:29  profilanswer
 

chacal_one333 a écrit :

le probleme n'est pas le [0-9], ben que j'ai maintenant mis \d, mais le {9} qui ne fonctionne pas

J'ai compris, il faut attacher le masque :

Code :
  1. preg_match("/^\d{9}$/", $dateNaiss)

mood
Publicité
Posté le 29-09-2004 à 15:53:29  profilanswer
 

n°860132
simogeo
j'ai jamais tué de chats, ...
Posté le 29-09-2004 à 15:55:14  profilanswer
 

Code :
  1. if(is_numeric($dateNaiss)) $dateNaiss = date("Y-m-d", $dateNaiss);


 
:o .. moins gourmand qu'un regex [:dawa]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°860141
Profil sup​primé
Posté le 29-09-2004 à 15:57:58  answer
 

parfait :)
 
En gros s'il y a des chiffres apres le timestamp, il le considere en dehors de la regexp, il trouve un match mais n'inclue pas les chiffre apres les 9 dedant, donc il faut delimiter :jap:
 
astucieux :D

n°860142
Masenko
Posté le 29-09-2004 à 15:58:13  profilanswer
 

Faut pas mettre les - dans Y-m-d faut mettre Ymd
 
nan rien... :)


Message édité par Masenko le 29-09-2004 à 15:58:38
n°860145
Profil sup​primé
Posté le 29-09-2004 à 15:59:22  answer
 

masenko a écrit :

Faut pas mettre les - dans Y-m-d faut mettre Ymd
 
nan rien... :)

ca me fait un motif d'explode :D

n°860149
Masenko
Posté le 29-09-2004 à 16:03:46  profilanswer
 

j ai rarement vu un sujet ou y avait autant de réponse en aussi peu de temps alors si quelqun pouvais m aider ici ce serait cool :)
http://forum.hardware.fr/hardwaref [...] 8125-1.htm

n°860154
moxfulder
PSN : MoxFulder_
Posté le 29-09-2004 à 16:06:07  profilanswer
 

Moi j'ai un autre défi.
Supposons un formulaire avec un champ texte ou l'utilisteur peut écrire ce qu'il veut. J'aimerai que si il affiche <h1>salut</h1> et que l'on affiche ce texte, ce que soit écrit salut sans que le html soit pris en compte. J'ai fais une expression régulière qui regarde si <QQCH>texte</QQCH> existe, c'est bon mais j'aimerai que si ça existe, pouvoir sortir le contenu de la balise. Une idée ?

n°860162
simogeo
j'ai jamais tué de chats, ...
Posté le 29-09-2004 à 16:09:04  profilanswer
 

si t'as pas besoin de retenirle nom du tag --> strip_tags() roulaize :D


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°860163
Profil sup​primé
Posté le 29-09-2004 à 16:09:37  answer
 

ca part en topic "help sur les regexp :D"

n°860173
kalex
Posté le 29-09-2004 à 16:14:54  profilanswer
 

simogeo a écrit :

si t'as pas besoin de retenirle nom du tag --> strip_tags() roulaize :D

Oui sinon, voici une base :

'/<(h1)>(.*?)<\/\\1>/'


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme d'une simple expression reguliere [RESOLU]

 

Sujets relatifs
Probleme de gotoAndPlay[Résolu][Eclipse 3] générer un "model"
[resolu]Forcer telechargement header() prob dans include() helpProblème d'insertion en base de données
Problème de mode :/probleme d'addition avec Visual Basic 6
probleme avec md5 et ma session [RESOLU]Probleme balise peut etre balise span sous mozilla et pas sous ie
affichage d'un count j'en peut plus [RESOLU] 
Plus de sujets relatifs à : Probleme d'une simple expression reguliere [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR