- REG_ERANGE: invalid caracters ??? [PHP] - PHP - Programmation
Marsh Posté le 16-06-2004 à 11:50:56
non le {3,} ca ve dire minimum 3 caractères et maxi illimité
J'ai essayé sur une autre vérification:
Code :
|
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.
Marsh Posté le 16-06-2004 à 11:54:30
if(!ereg("^([\'-a-zA-Z]|[[:space:]]){3,}$", $NOM))
et en l'echappant ?
Marsh Posté le 16-06-2004 à 12:05:20
if(!ereg("^(['-_0-9a-zA-Z]|[:space:]){3,}$", $DOMAINE))
comme ca ?
Marsh Posté le 16-06-2004 à 12:08:07
['-a-zA-Z]
Je vois le range '-a !
Je vois le range A-Z !
mais le range -z, c'est quoi ?
Marsh Posté le 16-06-2004 à 12:09:57
Mara's dad a écrit : ['-a-zA-Z] |
a mais uiiii biensûr
j'ai corrigé un ereg y'a 2 jours pour la même erreur en plus
Marsh Posté le 16-06-2004 à 16:13:37
Mara's dad a écrit : ['-a-zA-Z] |
ben normalement c'est le caractère ' et ensuite un tiret et après l'alphabet en minuscule
Marsh Posté le 16-06-2004 à 17:01:25
Je vien de faire des modifications:
Code :
|
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é.
Marsh Posté le 16-06-2004 à 17:07:09
if(!ereg("^(['-_0-9a-zA-Z]|[[:space:]]){3,}$", $DOMAINE))
devient
if(!ereg("^([0-9a-zA-Z'_-]|[[:space:]]){3,}$", $DOMAINE))
non ?
Marsh Posté le 16-06-2004 à 17:08:50
simogeo a écrit : if(!ereg("^(['-_0-9a-zA-Z]|[[:space:]]){3,}$", $DOMAINE)) |
Je vais tester cela.
J'ai testé et ca ne fonctionne toujours pas.
Marsh Posté le 16-06-2004 à 17:13:39
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
Marsh Posté le 16-06-2004 à 17:29:35
T509 a écrit : lit ceci : |
pourtant, normalement le ' n'est pas reservé ?
Marsh Posté le 16-06-2004 à 17:29:46
J'ai fais comme cela:
if(!ereg("^([_0-9a-zA-Z[:space:]]|\\-|\x27){3,}$", $NOM_ENT))
Ca ne fonctionne pas.
Marsh Posté le 16-06-2004 à 17:36:24
^([-_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
Marsh Posté le 16-06-2004 à 17:39:34
ereg, c'est de la daube
preg_match( "/^[0-9a-z_\\-\b\']{3,}$/i", "01-mmMP_'rt" ) -> 1
Marsh Posté le 16-06-2004 à 17:40:43
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))
Marsh Posté le 16-06-2004 à 17:41:51
peux tu nous expliquer ton motif ?
Marsh Posté le 16-06-2004 à 17:42:24
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 ?
Marsh Posté le 16-06-2004 à 17:43:43
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 ( moi j'men fous je l'sais déjà )
Marsh Posté le 16-06-2004 à 17:46:20
J'ai appliqué ta solution, et cela ne fonctionne pas.
Code :
|
que représente le x20 ?
Marsh Posté le 16-06-2004 à 17:50:26
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
Voir le commentaire de "mina86 at tlen dot pl" (deuxième commentaire) à propos de la vitesse d'execution re
Marsh Posté le 16-06-2004 à 17:51:28
Bon, sinon AlphaZone, tu cherches à faire quoi exactement ?
Marsh Posté le 16-06-2004 à 17:52:40
\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.
Marsh Posté le 16-06-2004 à 17:56:00
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
Marsh Posté le 16-06-2004 à 17:56:21
T509 a écrit : \x20 représente l'espace, cf la table ascii |
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 ' ??
Marsh Posté le 16-06-2004 à 18:19:56
AlphaZone a écrit : Je cherche a restreindre l'accès au caractères spéciaux. |
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 !
Marsh Posté le 16-06-2004 à 18:20:02
vérifie sur la table ascii, mais oui je crois bien que le code hexa 27 correspond à '
Marsh Posté le 16-06-2004 à 18:27:01
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. |
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.
Marsh Posté le 16-06-2004 à 18:31:03
peut être une solution :
http://www.whisky.fr/index.php?par [...] er_by=prix
Marsh Posté le 16-06-2004 à 18:46:18
moi je ne comprends pas à quoi sert le double \\
donc peut être qu'en faisant ceci :
^([-_0-9a-zA-Z\\x20\\x27]{3,})$
Marsh Posté le 16-06-2004 à 11:44:45
Bonjours à tous,
Voila j'ai un proglème avec ma fonction ereg().
Erreur:
Ligne concerné:
A tout hazard, vous ne savez pas d'où cela peut-il venir ?
Merci