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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] regexp encore !!! :'(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] regexp encore !!! :'(

n°216366
k666
dites non à petitmou
Posté le 18-09-2002 à 14:36:06  profilanswer
 

salut
j'ai des types de données qui doivent respecter des intervalles de définition,
par exemple:
 
integer doit être entre 0 et 255
 
sinteger doit être de -1 à 100 (par exemple, c pipo je sais ..) etc...
coment on fait pour pas devoir dénombrer tout, eskil ya un moyen de faire des range dans les regexp ???
merci bien :)


Message édité par k666 le 18-09-2002 à 15:19:25

---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
mood
Publicité
Posté le 18-09-2002 à 14:36:06  profilanswer
 

n°216455
k666
dites non à petitmou
Posté le 18-09-2002 à 15:27:50  profilanswer
 

:cry:  
 
si je veux faire une regexp pour matcher des signed integer de  
-32768 à 32767 ej fais comment ? :cry: :cry: !!!! :(:(:(:(:(:


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
n°216462
_Mac_
Posté le 18-09-2002 à 15:29:55  profilanswer
 

Je ne pense pas que ce soit possible, dans la mesure où les expressions régulières ne gèrent que les chaînes de caractères.

n°216466
omega2
Posté le 18-09-2002 à 15:32:01  profilanswer
 

1) Tu gardes que la partei numérique de cette chaine.
2) Tu transformes ta chaine en nombre (un simple 0+$var sufit emplement)
3) tu compare ton nombre avec els bornes de l'intervale.
 
JE vois pas plus simple. A la limite, la partie 2 peut être sauté mais j'en suis pas certain.

n°216467
k666
dites non à petitmou
Posté le 18-09-2002 à 15:32:28  profilanswer
 

mais ya pourtant [0-9] :(
pourquoi ya pas [0-255] et d'autre strucs :(
zut alors :(:(:(


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
n°216473
k666
dites non à petitmou
Posté le 18-09-2002 à 15:35:05  profilanswer
 

omega2 a écrit a écrit :

1) Tu gardes que la partei numérique de cette chaine.
2) Tu transformes ta chaine en nombre (un simple 0+$var sufit emplement)
3) tu compare ton nombre avec els bornes de l'intervale.
JE vois pas plus simple. A la limite, la partie 2 peut être sauté mais j'en suis pas certain.




 
malheureusement vu comment est foutue mon appli je peux pas faire ça :( la seule chose que je peux c tchecker la chaine directement telle quelle à une regexp et savoir si trou ou folse


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
n°216474
omega2
Posté le 18-09-2002 à 15:35:20  profilanswer
 

k666 a écrit a écrit :

mais ya pourtant [0-9] :(
pourquoi ya pas [0-255] et d'autre strucs :(
zut alors :(:(:(



[0-9], c'est les caractères '0' à '9' et non pas les nombre 0 à 9. ;)
Si tu veux faire joujou, avec php une des fonctions utilisant des regexp peut utiliser une fonction pour savoir comment remplacer la chaine trouvé. Là, t'auras que des chiffres si tu fais des [0-9] ou équivalent dans ta regexp.

n°216475
k666
dites non à petitmou
Posté le 18-09-2002 à 15:36:23  profilanswer
 

:cry:  :cry: j'ai pas envie de me taper la regexp de malade  :cry:  :cry: à l'aide  :cry:


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
n°216476
omega2
Posté le 18-09-2002 à 15:36:33  profilanswer
 

k666 a écrit a écrit :

 
 
malheureusement vu comment est foutue mon appli je peux pas faire ça :( la seule chose que je peux c tchecker la chaine directement telle quelle à une regexp et savoir si trou ou folse



Et tu peux pas faire une fonction qui vérifiera ta chaine et te retourne true ou false? (j'ai pas le code de ton applis sous les yeux alors je sais pas si c'est fesable)


Message édité par omega2 le 18-09-2002 à 15:37:15
n°216482
k666
dites non à petitmou
Posté le 18-09-2002 à 15:39:55  profilanswer
 

bin en fait j'ai défini plein de constantes avec les type utilisables dans l'appli
 
 


 
 
// on définit toutes les constante de code erreur cmi
define("CMI_NO_ERROR",0);
define("CMI_GENERAL_EXCEPTION",101);
define("CMI_INVALID_ARGUMENT_ERROR",201);
define("CMI_CANNOT_HAVE_CHILDREN",202);
define("CMI_NOT_ARRAY",203);
define("CMI_NOT_INITIALIZED",301);
define("CMI_NOT_IMPLEMENTED",401);
define("CMI_INVALID_SET_VALUE",402);
define("CMI_ELEMENT_READ_ONLY",403);
define("CMI_ELEMENT_WRITE_ONLY",404);
define("CMI_INCORRECT_DATA_TYPE",405);
 
// on définit les types de données acceptées par le modèle
define("TYPES_CMIBLANK","/^$/" );
define("TYPES_CMIBOOLEAN","/^(true|false)$/" );
define("TYPES_CMIDECIMAL","/^\-?[0-9]+(\.[0-9])?[0-9]*$/" );
define("TYPES_CMIFEEDBACK","/^.*$/" );
define("TYPES_CMIIDENTIFIER","/^\w{0,255}$/" );
define("TYPES_CMIINTEGER","/^[0-9]{0,65536}$/" );
define("TYPES_CMISINTEGER","/^(\-|\+)[0-9]{0,32768}$/" );
define("TYPES_CMISTRING255","/^.{0,255}$/" );
define("TYPES_CMISTRING4096","/^.{0,4096}$/" );
define("TYPES_CMITIME","/^(([0-1][0-9])|2[0-3])):[0-5][0-9]:[0-5][0-9](\.[0-9]{1,2})?$/" );
define("TYPES_CMITIMESPAN","/^[0-9]{1,4}:[0-5][0-9]:[0-5][0-9](\.[0-9]{1,2})?$/" );
define("TYPES_CMIVOCABULARY_mode","/^(normal|review|browse)$/" );
define("TYPES_CMIVOCABULARY_status","/^(passed|completed|failed|incomplete|browsed)$/" ); // |not attempted inséré à l'init
define("TYPES_CMIVOCABULARY_exit","/^(time\-out|suspend|logout)?$/" );
define("TYPES_CMIVOCABULARY_credit","/^(credit|no\-credit)$/" );
define("TYPES_CMIVOCABULARY_entry","/^(ab\-initio|resume)?$/" );
define("TYPES_CMIVOCABULARY_interaction","/^(true\-false|choice|fill\-in|matching|performance|likert|sequencing|numeric)$/" );
define("TYPES_CMIVOCABULARY_result","/^(correct|wrong|unanticipated|neutral)|(\-?[0-9]+(\.[0-9])?[0-9]*)$/" );
 


 
et après je fais un check vite fait
 
par exemple:
 


 function core666credit($value = NULL)
 {
 
  $access_type = "READ";
  $data_type = TYPES_CMIVOCABULARY_credit;
  $state = $this->checkState($access_type,$data_type,$value);
  if ( $state->errorCode() != CMI_NO_ERROR )  
  {
   return $state;
  }
 
  $returned = new cmireturn();
  $returned->errorCode(CMI_NO_ERROR);
  $returned->returnValue("no-credit" );
  $returned->debugData("core.credit passed , will always return 'no-credit' (hard-coded)" );
  return $returned;
 }
 


 
 
c la fonction checkState qui est très générique et qui tcheck le bordel,
et je peux pas la compliquer paske ça va être le bordel :(
 
 
donc peux pas faire de trucs cheloux :(


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
mood
Publicité
Posté le 18-09-2002 à 15:39:55  profilanswer
 

n°216483
k666
dites non à petitmou
Posté le 18-09-2002 à 15:40:41  profilanswer
 

ji soui nikaid


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/
n°216487
gm_superst​ar
Appelez-moi Super
Posté le 18-09-2002 à 15:43:38  profilanswer
 

k666 a écrit a écrit :

mais ya pourtant [0-9] :(
pourquoi ya pas [0-255] et d'autre strucs :(
zut alors :(:(:(



Parce que [0-9] ça repère tous les *chiffres* de 0 à 9, pas les *nombres*
 
Cela dit on peut faire comme ça pour les entiers de 0 à 32767
([1-2]?[0-9]{0,4})|(3[0-1][0-9]{3})|(32[0-6][0-9]{2})|(327[0-5][0-9]|3276[0-7])

n°216492
omega2
Posté le 18-09-2002 à 15:46:33  profilanswer
 

Donc il te reste plus qu'à faire une fonction dérivé de celle ci, qui utilise celle ci et qui fait ensuite des tests complémentaires.
Je vois que ça pour le moment.

n°216493
omega2
Posté le 18-09-2002 à 15:47:24  profilanswer
 

gm_superstar a écrit a écrit :

 
Parce que [0-9] ça repère tous les *chiffres* de 0 à 9, pas les *nombres*
 
Cela dit on peut faire comme ça pour les entiers de 0 à 32767
([1-2]?[0-9]{0,4})|(3[0-1][0-9]{3})|(32[0-6][0-9]{2})|(327[0-5][0-9]|3276[0-7])



:o J'avais pas pensé à aussi simple moi. :o

n°216507
k666
dites non à petitmou
Posté le 18-09-2002 à 16:01:00  profilanswer
 

:jap:

gm_superstar a écrit a écrit :

 
Parce que [0-9] ça repère tous les *chiffres* de 0 à 9, pas les *nombres*
 
Cela dit on peut faire comme ça pour les entiers de 0 à 32767
([1-2]?[0-9]{0,4})|(3[0-1][0-9]{3})|(32[0-6][0-9]{2})|(327[0-5][0-9]|3276[0-7])



:jap:


---------------
mangez du mozilla c le futur, c votre DESTIN ! http://www.mozilla.org/releases/

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

  [PHP] regexp encore !!! :'(

 

Sujets relatifs
PHP - Execution automatique d'un script[PHP] besoin aide avec REGEXP
[PHP][PDF][HTTP][IE] ! Pourquoi IE demande-t-il le fichier 2 fois ?help PHP sur les dates ?
[PHP] Ecrire un fichier sur le disque dur du client...[PHP] Mettre un cadre de couleur dans INPUT...?
[PHP] Aide pour une regexp[PhP - RegExp] pitit probleme de quotes
[PHP] Besoin d'aide sur une regexpRegExp en PHP la PLUS PETITE!
Plus de sujets relatifs à : [PHP] regexp encore !!! :'(


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