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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] - REG_ERANGE: invalid caracters ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] - REG_ERANGE: invalid caracters ???

n°765518
AlphaZone
Posté le 16-06-2004 à 11:44:45  profilanswer
 

Bonjours à tous,
 
Voila j'ai un proglème avec ma fonction ereg().
 
Erreur:

Code :
  1. Warning: REG_ERANGE:zinvalid character range in c:\program files\easyphp\www\critt_z3t\includes\fonctions.inc.php on line 64


 
Ligne concerné:

Code :
  1. 63 // Vérification du nom
  2. 64 if(!ereg("^(['-a-zA-Z]|[[:space:]]){3,}$", $NOM))
  3. 65 {


 
A tout hazard, vous ne savez pas d'où cela peut-il venir ?
 
Merci

mood
Publicité
Posté le 16-06-2004 à 11:44:45  profilanswer
 

n°765529
Profil sup​primé
Posté le 16-06-2004 à 11:48:45  answer
 

le {3,}
 
manque un chiffre nan :??:

n°765535
AlphaZone
Posté le 16-06-2004 à 11:50:56  profilanswer
 

non le {3,} ca ve dire minimum 3 caractères et maxi illimité
 
 
J'ai essayé sur une autre vérification:

Code :
  1. if(!ereg("^(['-_0-9a-zA-Z]|[[:space:]]){3,}$", $DOMAINE))
  2.  {
  3.  echo '<table cellspacing="0" cellpadding="10" border="0" width="560" align="center">
  4.    <tr>
  5.     <td class="t20" align="center">ERREUR DE SAISIE !!</td>
  6.    </tr>
  7.    <tr>
  8.     <td><b>Le domaine est invalide.</b><br><br>- Vous devez saisir au minimum 3 caractères.<br>- Seuls les lettres, chiffres, espaces, underscore "_" et tiret "-" sont autorisés<br><br><a href="javascript:history.back()">Retour</a></td>
  9.    </tr>
  10.    </table>';
  11.  exit();
  12.  }


 
Et ca fonctionne sans problème. En faite c'est le ' qu'il n'aime pas. Je ne comprend pas car au-dessus ca fonctionne.


Message édité par AlphaZone le 16-06-2004 à 11:53:10
n°765544
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 11:54:30  profilanswer
 

if(!ereg("^([\'-a-zA-Z]|[[:space:]]){3,}$", $NOM))  
 
et en l'echappant ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°765558
AlphaZone
Posté le 16-06-2004 à 12:00:15  profilanswer
 

Ca fonctionne pas ce cette manière :'(

n°765570
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 12:05:20  profilanswer
 

if(!ereg("^(['-_0-9a-zA-Z]|[:space:]){3,}$", $DOMAINE))  
 
 
comme ca ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°765578
Mara's dad
Yes I can !
Posté le 16-06-2004 à 12:08:07  profilanswer
 

['-a-zA-Z]
 
Je vois le range '-a !
Je vois le range A-Z !
 
mais le range -z, c'est quoi ? :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°765583
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 12:09:57  profilanswer
 

Mara's dad a écrit :

['-a-zA-Z]
 
Je vois le range '-a !
Je vois le range A-Z !
 
mais le range -z, c'est quoi ? :D


 
a mais uiiii biensûr   :o  
 
 :whistle:  
 
j'ai corrigé un ereg y'a 2 jours pour la même erreur en plus [:kiki]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766017
AlphaZone
Posté le 16-06-2004 à 16:13:37  profilanswer
 

Mara's dad a écrit :

['-a-zA-Z]
 
Je vois le range '-a !
Je vois le range A-Z !
 
mais le range -z, c'est quoi ? :D


 
ben normalement c'est le caractère ' et ensuite un tiret et après l'alphabet en minuscule

n°766150
AlphaZone
Posté le 16-06-2004 à 17:01:25  profilanswer
 

Je vien de faire des modifications:

Code :
  1. if(!ereg("^([_a-zA-Z[:space:]]|\\-){2,}$", $DOMAINE))


 
Ca accept les lettres de l'alphabet en minuscule et majuscule, les espaces, les tirets et l'underscore.
 
Maintenant j'aimerais autorisé le caractère '  
 
Je devrais faire comment ?
 
sur expreg.com c'est pas très bien expliqué.


Message édité par AlphaZone le 16-06-2004 à 17:08:18
mood
Publicité
Posté le 16-06-2004 à 17:01:25  profilanswer
 

n°766161
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 17:07:09  profilanswer
 

if(!ereg("^(['-_0-9a-zA-Z]|[[:space:]]){3,}$", $DOMAINE))  
 
devient
 
if(!ereg("^([0-9a-zA-Z'_-]|[[:space:]]){3,}$", $DOMAINE))  
 
non ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766169
AlphaZone
Posté le 16-06-2004 à 17:08:50  profilanswer
 

simogeo a écrit :

if(!ereg("^(['-_0-9a-zA-Z]|[[:space:]]){3,}$", $DOMAINE))  
 
devient
 
if(!ereg("^([0-9a-zA-Z'_-]|[[:space:]]){3,}$", $DOMAINE))  
 
non ?


 
Je vais tester cela.
 
 
J'ai testé et ca ne fonctionne toujours pas.


Message édité par AlphaZone le 16-06-2004 à 17:12:08
n°766179
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 17:13:39  profilanswer
 

lit ceci :
http://www.php.net/manual/fr/pcre.pattern.syntax.php
 
il y est expliqué que tu peux mettre un code hexa pour un caractère (paragraphe antislash)
 
remplace donc ' par \x27


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766227
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 17:29:35  profilanswer
 

T509 a écrit :

lit ceci :
http://www.php.net/manual/fr/pcre.pattern.syntax.php
 
il y est expliqué que tu peux mettre un code hexa pour un caractère (paragraphe antislash)
 
remplace donc ' par \x27


 
pourtant, normalement le ' n'est pas reservé ? [:meganne]
 
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766228
AlphaZone
Posté le 16-06-2004 à 17:29:46  profilanswer
 

J'ai fais comme cela:
if(!ereg("^([_0-9a-zA-Z[:space:]]|\\-|\x27){3,}$", $NOM_ENT))
 
Ca ne fonctionne pas.

n°766244
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 17:36:24  profilanswer
 

^([-_0-9a-zA-Z\x20\x27]{3,})$
je ne comprends pas pourquoi tu introduit des conditions avec |
 
les (), c'est pour une séquence, les [] c'est pour une classe, {} se raporte à une classe et non pas à une séquence.
Juste avant tu disais
carcatères contenus dans _0-9a-zA-Z[:space:]
ou bien le tiret
ou bien le '
le tout sur 3 caractères mini
 
Tu comprendra que bonjour'madame ne pourra pas fonctionner


Message édité par T509 le 16-06-2004 à 17:37:13

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766248
Mara's dad
Yes I can !
Posté le 16-06-2004 à 17:39:34  profilanswer
 

ereg, c'est de la daube :D
 
preg_match( "/^[0-9a-z_\\-\b\']{3,}$/i", "01-mmMP_'rt" ) -> 1


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°766249
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 17:40:43  profilanswer
 

peut-etre que la syntaxe est bonne mais ne matche pas ce que tu souhaites réellement
 
 
c'est pas ca que tu veux ?
if(!ereg("^([0-9a-zA-Z\s'_-]){3,}$", $DOMAINE))  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766250
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 17:41:51  profilanswer
 

peux tu nous expliquer ton motif ?


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766252
AlphaZone
Posté le 16-06-2004 à 17:42:24  profilanswer
 

Faut que je me fasse une récapitulation:
Admettons j'ai mon email:
toto@titi.com
 
Ma 1ère séquence sera toto ? la 2ème titi et la 3ème com ?
Mais a quoi servent les classes ?
 
Quel est réellement la différence entre classe et sequence ?

n°766257
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 17:43:43  profilanswer
 

T509 a écrit :

peux tu nous expliquer ton motif ?


 
+1
 
mara's dad > dis lui pourquoi preg_match c'est mieux, sinon il a aucune raison de t'écouter :p ( moi j'men fous je l'sais déjà [:franck75] :D )


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766262
AlphaZone
Posté le 16-06-2004 à 17:46:20  profilanswer
 

J'ai appliqué ta solution, et cela ne fonctionne pas.
 

Code :
  1. if(!ereg("^([-_0-9a-zA-Z\x20\x27]{3,})$", $DOMAINE))


 
que représente le x20 ?


Message édité par AlphaZone le 16-06-2004 à 17:46:44
n°766264
Profil sup​primé
Posté le 16-06-2004 à 17:47:04  answer
 

par hazard ton nom_ent retourne bien le mail? :)

n°766271
AlphaZone
Posté le 16-06-2004 à 17:48:29  profilanswer
 

???

n°766273
Mara's dad
Yes I can !
Posté le 16-06-2004 à 17:50:26  profilanswer
 

http://www.php.net/manual/fr/ref.regex.php
C'est presque écrit NOIR sur BLANC que les expression régulières compatibles Perl sont mieux :D
Voir le commentaire de "mina86 at tlen dot pl" (deuxième commentaire) à propos de la vitesse d'execution re :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°766275
Mara's dad
Yes I can !
Posté le 16-06-2004 à 17:51:28  profilanswer
 

Bon, sinon AlphaZone, tu cherches à faire quoi exactement ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°766277
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 17:52:40  profilanswer
 

\x20 représente l'espace, cf la table ascii
un classe est un groupe de caractères authorisé, une séquence est un élément recherché
 
exemple une adresse mail est composé de 3 séquences : utilisateur, domaine et extension
tu peux faire correspondre chaque séquence à une classe ou alors la me^me classe pour toutes les séquences.


Message édité par T509 le 16-06-2004 à 17:53:39

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766284
AlphaZone
Posté le 16-06-2004 à 17:56:00  profilanswer
 

Mara's dad a écrit :

Bon, sinon AlphaZone, tu cherches à faire quoi exactement ?


 
Je cherche a restreindre l'accès au caractères spéciaux.
 
Plus précisement je cherche a autorisé les caractères normaux maj/minuscule ainsi que le tiret et l'underscore bien entendu l'espce et la strof ' doivent être compris dans cette autorisation.
 
a->z OK
A->Z OK
' OK
_ OK
- OK
<espace> OK
 
le reste ERREUR


Message édité par AlphaZone le 16-06-2004 à 18:00:19
n°766285
AlphaZone
Posté le 16-06-2004 à 17:56:21  profilanswer
 

T509 a écrit :

\x20 représente l'espace, cf la table ascii
un classe est un groupe de caractères authorisé, une séquence est un élément recherché
 
exemple une adresse mail est composé de 3 séquences : utilisateur, domaine et extension
tu peux faire correspondre chaque séquence à une classe ou alors la me^me classe pour toutes les séquences.


 
merci de l'explication ca commence a devenir un peu plus clair
 
 
Sur la soluce que tu ma donné auparavant, tout fonctionne SAUF '
Est-ce bien x27 pour ' ??


Message édité par AlphaZone le 16-06-2004 à 17:59:59
n°766301
Mara's dad
Yes I can !
Posté le 16-06-2004 à 18:19:56  profilanswer
 

AlphaZone a écrit :

Je cherche a restreindre l'accès au caractères spéciaux.
 
Plus précisement je cherche a autorisé les caractères normaux maj/minuscule ainsi que le tiret et l'underscore bien entendu l'espce et la strof ' doivent être compris dans cette autorisation.
 
a->z OK
A->Z OK
' OK
_ OK
- OK
:espace: OK
 
le reste ERREUR


 
Ca j'avais compris, mais de temps en temps tu parles de NOM, d'autres fois de DOMAINE, et quelques-fois d'EMAIL.
 
Donc il s'agit de valider une adresse email c'est bien ça ?
 
Rqm, il ne me semble pas que l'espace et l'apostrophe soit autorisé dans une adresse email. En revanche pour le nom, le point l'est.
 
Exemple : "/^[\w_.-]+@[\w_.-]+\\.[\w]+$/" avec preg_match of course !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°766302
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 18:20:02  profilanswer
 

vérifie sur la table ascii, mais oui je crois bien que le code hexa 27 correspond à '


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766304
AlphaZone
Posté le 16-06-2004 à 18:27:01  profilanswer
 

Mara's dad a écrit :

Ca j'avais compris, mais de temps en temps tu parles de NOM, d'autres fois de DOMAINE, et quelques-fois d'EMAIL.
 
Donc il s'agit de valider une adresse email c'est bien ça ?
 
Rqm, il ne me semble pas que l'espace et l'apostrophe soit autorisé dans une adresse email. En revanche pour le nom, le point l'est.
 
Exemple : "/^[\w_.-]+@[\w_.-]+\\.[\w]+$/" avec preg_match of course !


 
Non c'est pas par rapport a une adresse email mais par rapport a un formulaire.
Les variables ne sont pas importante dans mon problème.
 
C'est ce fichu caractère ' qui m'aime pas.

n°766307
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 18:31:03  profilanswer
 

peut être une solution :
http://www.whisky.fr/index.php?par [...] er_by=prix
 
;) ;) ;)


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°766316
AlphaZone
Posté le 16-06-2004 à 18:39:36  profilanswer
 

effectivement ca aide.

n°766321
T509
$job-&gt;GetJob(now)
Posté le 16-06-2004 à 18:46:18  profilanswer
 

moi je ne comprends pas à quoi sert le double \\
donc peut être qu'en faisant ceci :
 ^([-_0-9a-zA-Z\\x20\\x27]{3,})$  


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
mood
Publicité
Posté le   profilanswer
 


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

  [PHP] - REG_ERANGE: invalid caracters ???

 

Sujets relatifs
plus rien ne fonctionne apres une reinstallation de php[PHP] Problème de redirection
Peut on inserer du code php dans une base de donnée ?[PHP] Conversion fichier .tif en .png 24 bits
Limite de cookies en php ?[PHP] accents inclus ou non dans les expressions rationelles [a-z]
[php] - Help avec fonction ereg() toujour et encore incompréhensibleProblème liaison Javascript/PHP [Résolu]
[PHP]Tableaux multidimensionnels[PHP] Lister les champs d'une table
Plus de sujets relatifs à : [PHP] - REG_ERANGE: invalid caracters ???


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