coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 14 janv. 2006 à 18:16
kancrelune, je ne suis pas sur que la pattern soit ici appropriée au problème...
selon moi, t'as un truc comme ça :
if ($chaine!==str_replace($array_bad_char_and_words, ' ', $haine))
echo 'mot(s) interdits !';
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 14 janv. 2006 à 17:47
Ouep c'est clair que si tu as beaucoups de caractères interdits la regexp sera la plus adaptée... je disais surtout ça à titre informatif et dans le cas de seulement trois ou quatres caractères interdits... .. .
@ tchaOo°
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 14 janv. 2006 à 14:59
$mots_interdits=array();
m'enfin ça reste quand même complexe pour ce qu'il y a à faire :-)
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 14 janv. 2006 à 13:52
Ok, je vais changer les <? en <?php
mais sinon, ca changerais quoi error reposting E_ALL.
et comment déclarer ma variable ? en faisant : $mot_inderdits = '' ?
Ensuite, pour une fonction, pourquoi pas, c'est une bonne idee.
A++
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 14 janv. 2006 à 10:43
au départ, ta variable $mot_interdits[ n'est pas déclarée...
tu utilise des <? à la place des <?php
un foreach et une fonction pourraient être utiles pour faire ces tests... là, c'est pas super super exploitable...
bref, met error reposting à E_ALL
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 14 janv. 2006 à 10:02
Kankrelune > t'es obligé d'en utiliser plusieurs, ça devient grade (ça revient au même que strpos à peu de choses près) donc Arnauti la réponse est non :-( tandis que l'expression régulière va voir si il y a un ou plusieurs caractères qu'ils se suivent ou non.
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 14 janv. 2006 à 09:44
Et si il y a plusieurs caractères et ce que ca peut marcher ?
A++
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 14 janv. 2006 à 02:42
if(!stristr($montext, 'moncharactèe')){
// c'est ok
}
@ tchaOo°
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 12 janv. 2006 à 11:09
Bonjour,
la solution d'Anthomicro est sans doute plus rapide mais moins claire je trouve pour les débutants.
Sinon, Arto_8000 pourquoi pas, mais comme tu le dis toi même, on ne voit pas tout les caractères que l'utilisateurs a entrés et qui ne sont pas acceptés.
Bon, la maintenant, je vais corrigé un peux la source, mais, je vais gardé mais technique car plus simple pour les débutants comme moi.
A++
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 12 janv. 2006 à 00:34
Pour amélioré la rapidité de ton script tu pourrait rajouter un break après qu'un caractère interdit soit trouvé au lieu de continuer à tester les autres caractères. C'est sur que ça te retourne pas tout les caractères que tu dois pas utiliser, mais au moins c'est plus rapide si ta plusieurs caractères à tester. Sinon la solution d'Anthomicro est très bonne les expressions peuvent très bien faire le travail et son facile d'utilisation.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 11 janv. 2006 à 23:14
Salut,
T'as un truc beaucoup plus simple et surement plus rapide à mon avis : les expressions régulières. Je sais pas si ta solution est plus rapide (je ne pense pas, mais c'est à tester :-) ), mais regarde ça par exemple :
if(eregi("[@'$()*+<>?#"{}\\]",$chaine))
{
//cette chaîne contient soit le caractère @ soit ' soit $ ...
}
a +
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 11 janv. 2006 à 21:32
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 11 janv. 2006 à 21:13
Salut, je vais faire ce que tu dis pour optimiser un peu, mais pour foreach() je ne connais pas et je ne souhiates pas me lancer la dedans sans en connaitre plus.
Si tu a un tuto qui explique bien foreach() dit le moi stp.
A++
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 11 janv. 2006 à 17:55
Il valait mieux faire if ($position !== false) plus exactement.
Ta condition avec true est en effet tirée par les cheveux. Si elle fonctionne...elle reste incorrecte. C'est de la programmation brouillon ;-)
strpos () renvoie false en cas d'échec, ou un integer en cas de succès, integer donnant la position du caractère trouvé.
au passage, if ($position !false) est faux. Parce que si strpos () trouve le caractère à la position 0 (1er caractère de ta chaîne), cette condition va être vérifiée. 0 false. Aors que 0 !== false.
Ensuite, un foreach sur ton tableau de mots interdits aurait été plus judicieux et aurait raccourci le code.
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 11 janv. 2006 à 17:43
Nous on veux savoir si il trouve, donc, je pense que c'est juste. Sinon, tu peut être voulais dire qu'il faudrait mieux faire : if ($position != FALSE) ?
A++
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 11 janv. 2006 à 17:31
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 11 janv. 2006 à 16:56
Oui, je l'ai fait pour ça et aussi parce que je me suis dis qu'il faudrais peut-être qu'un jour je poste une source ^^.
Sinon, lorsque je mettrais les commentaires pour le script, je corrigerais aussi le <? en <?php
je ne le fait pas tout de suite car je ne voudrais pas faire 36 updates ^^.
A++
milkasoprano
Messages postés239Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention 1 juillet 2007 11 janv. 2006 à 16:53
en plus je remarque que tu as fais cette source expres pour moi non ? vu que javai posté une petite aide et tu as surement remarqué qu'il nexistait pas de source comme celle la sur phpcs :) non ? je me trompe peut etre :) en tous cas merciii !
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 11 janv. 2006 à 16:53
De rien, et merci a toi pour le 9.
A++
milkasoprano
Messages postés239Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention 1 juillet 2007 11 janv. 2006 à 16:50
Merci pour cette source :) c'est exactement cela que je cherchais pour mon site...comme tu avais pu le constater javai commencé mais faire avec un array :s c'était pas si simple! mais je vois maintenant comment tu as fais... merci ! j'ai fais quelques modifs pour ajuster ca a ce que je voulais ;)
merci encore :)
14 janv. 2006 à 18:16
selon moi, t'as un truc comme ça :
if ($chaine!==str_replace($array_bad_char_and_words, ' ', $haine))
echo 'mot(s) interdits !';
14 janv. 2006 à 17:47
@ tchaOo°
14 janv. 2006 à 14:59
m'enfin ça reste quand même complexe pour ce qu'il y a à faire :-)
14 janv. 2006 à 13:52
mais sinon, ca changerais quoi error reposting E_ALL.
et comment déclarer ma variable ? en faisant : $mot_inderdits = '' ?
Ensuite, pour une fonction, pourquoi pas, c'est une bonne idee.
A++
14 janv. 2006 à 10:43
tu utilise des <? à la place des <?php
un foreach et une fonction pourraient être utiles pour faire ces tests... là, c'est pas super super exploitable...
bref, met error reposting à E_ALL
14 janv. 2006 à 10:02
14 janv. 2006 à 09:44
A++
14 janv. 2006 à 02:42
et ça sera bien plus rapide qu'une regexp... .. .
if(!stristr($montext, 'moncharactèe')){
// c'est ok
}
@ tchaOo°
12 janv. 2006 à 11:09
la solution d'Anthomicro est sans doute plus rapide mais moins claire je trouve pour les débutants.
Sinon, Arto_8000 pourquoi pas, mais comme tu le dis toi même, on ne voit pas tout les caractères que l'utilisateurs a entrés et qui ne sont pas acceptés.
Bon, la maintenant, je vais corrigé un peux la source, mais, je vais gardé mais technique car plus simple pour les débutants comme moi.
A++
12 janv. 2006 à 00:34
11 janv. 2006 à 23:14
T'as un truc beaucoup plus simple et surement plus rapide à mon avis : les expressions régulières. Je sais pas si ta solution est plus rapide (je ne pense pas, mais c'est à tester :-) ), mais regarde ça par exemple :
if(eregi("[@'$()*+<>?#"{}\\]",$chaine))
{
//cette chaîne contient soit le caractère @ soit ' soit $ ...
}
a +
11 janv. 2006 à 21:32
11 janv. 2006 à 21:13
Si tu a un tuto qui explique bien foreach() dit le moi stp.
A++
11 janv. 2006 à 17:55
Ta condition avec true est en effet tirée par les cheveux. Si elle fonctionne...elle reste incorrecte. C'est de la programmation brouillon ;-)
strpos () renvoie false en cas d'échec, ou un integer en cas de succès, integer donnant la position du caractère trouvé.
au passage, if ($position !false) est faux. Parce que si strpos () trouve le caractère à la position 0 (1er caractère de ta chaîne), cette condition va être vérifiée. 0 false. Aors que 0 !== false.
Ensuite, un foreach sur ton tableau de mots interdits aurait été plus judicieux et aurait raccourci le code.
11 janv. 2006 à 17:43
A++
11 janv. 2006 à 17:31
http://fr2.php.net/manual/fr/function.strpos.php
Attention de ne pas tout mélanger :)
11 janv. 2006 à 16:56
Sinon, lorsque je mettrais les commentaires pour le script, je corrigerais aussi le <? en <?php
je ne le fait pas tout de suite car je ne voudrais pas faire 36 updates ^^.
A++
11 janv. 2006 à 16:53
11 janv. 2006 à 16:53
A++
11 janv. 2006 à 16:50
merci encore :)