vérification de caractères - PHP - Programmation
Marsh Posté le 30-03-2006 à 15:10:12
Tu dois pouvoir remplacer le "+" par "*", ce qui autoriserait une chaine vide
Sinon dans ton cas je pense que if (!preg_match('/^[\w]*$/i', $champs) ) devrais marcher.
\w correspond a tous les caracteres alphanumeriques (peut aussi inclure qq autres caracteres comme _ mais cela depend des implementations (langage))
Pour tous tes problemes de regex je te conseil http://www.weitz.de/regex-coach/ qui devient vite indispensable.
edit : mal lu la question
Marsh Posté le 30-03-2006 à 15:15:51
Woutcha a écrit : Tu dois pouvoir remplacer le "+" par "*", ce qui autoriserait une chaine vide |
haha gg c'etait bien ca le "*"
eh oui j'utilisais un !preg_match résultat le strlen($champs)==0 ne pouvait pas répondre à mon attente ni != d'ailleurs
merci en tout cas
Marsh Posté le 30-03-2006 à 16:19:57
ReplyMarsh Posté le 31-03-2006 à 10:25:22
omega2 a écrit : En quoi le "!" empéche l'utilisation de la fonction "strlen()"? |
J'ai pas dit que ca empechait l'utilisation, mais que ca ne répondait pas à ma question
if (strlen($champs)!=0 or !preg_match('/^[a-z0-9éèêëàâäìïîôöòùûüç]+$/i', $champs))
{
echo "mauvais caractères";
}
est différent de :
if (strlen($champs)==0 or preg_match('/^[a-z0-9éèêëàâäìïîôöòùûüç]+$/i', $champs))
{
echo "bons caractères";
}
Marsh Posté le 31-03-2006 à 16:25:41
si tu veux un lot de condition qui soit l'inverse d'un lot de condition donné, alors il faut utiliser un "!" générique ou un "!" pour chaque terme et inverser et "or" et les "and" (les "or" deviennent des "and" et les "and" deviennent des "or" )
C'est sur que si tu ne modifies que la moitié de l'ensemble, ca ne te donera pas ce que tu veux obtenir.
EDIT : rajout d'un espace pour éviter un smilie pas voulut.
Marsh Posté le 31-03-2006 à 17:30:05
Bon finalement ca ne va pas.
Il faut que les ' puissent être accepté !
exemple : l'entrée "l'escalier".
comment faire pour que le ' ou meme un ( ou \ etc ne pourrisse pas ma requete sql ?
Marsh Posté le 31-03-2006 à 18:19:10
Pour ne pas pourrir une requete SQl c'est pas une expression reguliere qu'il faut utiliser.
Mais plutot des outils adaptes :
http://fr.php.net/manual/fr/functi [...] string.php
Marsh Posté le 31-03-2006 à 18:59:57
Ok super
mais je ne comprends pas trop les explications qui y sont données..
il suffit de faire :
$valeur = mysql_real_escape_string($valeur);
Non?
enfin ca marche en tout cas chez moi, ou alors j'ai raté quelque chose?
Marsh Posté le 30-03-2006 à 15:00:15
salut,
voilà j'ai récupéré ca : if (!preg_match('/^[a-z0-9éèêëàâäìïîôöòùûüç]+$/i', $champs) )
ca accepte les caractères classiques, mais comment faire pour accepter un champ vide ??
le "\ " c'est l'espace..
Message édité par _Roland_ le 31-03-2006 à 17:30:26