par
boobz » 06 juil. 2009, 14:26
Donc un truc du genre ?
Code : Tout sélectionner
if (!preg_match('/^[0-9]{0,}/', $value)) { echo "ok"; } else { echo "pas ok"; }
Merci pour ton explication Calimero (et pourtant je n'ai pas vu te plaindre..

)
boobz
Toujours sans me plaindre donc, et vu que tu m'as suivi
Mais je suis toujours très bien quand l'explication est aussi clair !
J'ai corrigé trois erreurs : le ! devant qui inverse le sens du test, et le quantifieur (qui est erroné car tu attends toujours au moins un chiffre). Il faut aussi ajouter un délimiteur de fin de masque ($) pour être bien sûr. Ton expression régulière peut alors être simplifiée en :
° Pour le !, c'est parce qu'en fait j'utilise cette fonction pour créer mon tableau des erreurs, donc il faut le contraire.
° Le quantificateur +, évidemment, merci.
° Et pour le $, merci également, je me demandais avant d'aller manger pourquoi quelque chose du style de '12skks' passait. Et bien je crois que c'est parce qu'il s'arrête à la première occurence trouvée, est-ce juste ?
if (preg_match('/^\d+$/', $value)) { echo "ok"; } else { echo "pas ok"; }
Marche parfaitement, merci mille fois !
Mais tu peux aussi (et je te le recommande) compléter par une fourchette de comparaison, après t'être assuré via cette regexp que tu as bien affaire à un entier (quoique là, ta regexp permet aussi de s'assurer que ta valeur est _ au minimum _ un zéro, donc pas besoin de retester derrière) :
Pour s'assurer que la valeur n'est pas trop grande, c'est bien ça ? Le problème c'est qu'a priori je ne connais pas la quantité maximale.
if (preg_match('/^\d+/', $value)) { if( $value < 1234567 ) { echo "ok"; } else { echo "hors limite"; } } else { echo "pas ok"; }
Ok merci.
PS : petite question subsidiaire pendant qu'on y est. Ici il était question de tester une valeur numérique, mais évidemment dans mon formulaire je demande nom et prénom aussi. J'ai essayé d'écrire une regexp pour cela, mais quelle n'a pas été ma surprise de constater que ce n'était vraiment pas simple si l'on veut couvrir le champs entier des noms écrit avec notre alphabet. Mes clients proviennent du monde entier et ont donc des noms avec un ', et/ou un -, et/ou des espaces et j'en passe et des meilleures. Ma question est donc simple. Est-ce que l'usage est de vérifier ce genre d'entrée et si oui auriez-vous des exemples ?
PS2 : veuillez excuser le formatage s'il est un peu bizarre, j'écris ça depuis w3m, alors ce n'est pas toujours très évident de s'y retrouver avec les balises.
Merci encore pour votre aide,
boobz
[quote="Calimero"][quote="Anonymous"]Donc un truc du genre ?
[code]
if (!preg_match('/^[0-9]{0,}/', $value)) { echo "ok"; } else { echo "pas ok"; }
[/code]
Merci pour ton explication Calimero (et pourtant je n'ai pas vu te plaindre..;-))
boobz[/quote]
[/quote]
[quote]
Toujours sans me plaindre donc, et vu que tu m'as suivi ;-)
[/quote]
Mais je suis toujours très bien quand l'explication est aussi clair !
[quote]
J'ai corrigé trois erreurs : le ! devant qui inverse le sens du test, et le quantifieur (qui est erroné car tu attends toujours au moins un chiffre). Il faut aussi ajouter un délimiteur de fin de masque ($) pour être bien sûr. Ton expression régulière peut alors être simplifiée en :
[/quote]
° Pour le !, c'est parce qu'en fait j'utilise cette fonction pour créer mon tableau des erreurs, donc il faut le contraire.
° Le quantificateur +, évidemment, merci.
° Et pour le $, merci également, je me demandais avant d'aller manger pourquoi quelque chose du style de '12skks' passait. Et bien je crois que c'est parce qu'il s'arrête à la première occurence trouvée, est-ce juste ?
[php]
if (preg_match('/^\d+$/', $value)) { echo "ok"; } else { echo "pas ok"; }
[/php]
Marche parfaitement, merci mille fois !
[quote]
Mais tu peux aussi (et je te le recommande) compléter par une fourchette de comparaison, après t'être assuré via cette regexp que tu as bien affaire à un entier (quoique là, ta regexp permet aussi de s'assurer que ta valeur est _ au minimum _ un zéro, donc pas besoin de retester derrière) :
[/quote]
Pour s'assurer que la valeur n'est pas trop grande, c'est bien ça ? Le problème c'est qu'a priori je ne connais pas la quantité maximale.
[quote]
[php]
if (preg_match('/^\d+/', $value)) { if( $value < 1234567 ) { echo "ok"; } else { echo "hors limite"; } } else { echo "pas ok"; }
[/php]
[/quote]
Ok merci.
PS : petite question subsidiaire pendant qu'on y est. Ici il était question de tester une valeur numérique, mais évidemment dans mon formulaire je demande nom et prénom aussi. J'ai essayé d'écrire une regexp pour cela, mais quelle n'a pas été ma surprise de constater que ce n'était vraiment pas simple si l'on veut couvrir le champs entier des noms écrit avec notre alphabet. Mes clients proviennent du monde entier et ont donc des noms avec un ', et/ou un -, et/ou des espaces et j'en passe et des meilleures. Ma question est donc simple. Est-ce que l'usage est de vérifier ce genre d'entrée et si oui auriez-vous des exemples ?
PS2 : veuillez excuser le formatage s'il est un peu bizarre, j'écris ça depuis w3m, alors ce n'est pas toujours très évident de s'y retrouver avec les balises.
Merci encore pour votre aide,
boobz