Autor | Zpráva | ||
---|---|---|---|
Beduin Profil * |
#1 · Zasláno: 16. 7. 2009, 18:53:39
Ahoj,
dělám antispam v php. V poli mám seznam častých spamovacích slov a potřebuji zkontrolovat, jestli příspěvek neobsahuje některé z nich. Pro upřesnění ukážu: $komentar = "Tohle je komentář, který obsahuje slovo1, které je typické pro spamy."; $spam_slova = Array("slovo1", "slovo2", "slovo3", "slovo4"); if(/*komentář obsahuje spamovací slovo*/) echo "chybová zpráva"; Můžete mě nasměrovat na nějakou php funkci, která by takhle uměla prohledat string, jestli neobsahuje výraz z pole? |
||
fuckin Profil |
#2 · Zasláno: 16. 7. 2009, 18:59:05
www.php.net/in_array nebo treba pres foreach testovat kazdou hodnotu, zalezi jen na tobe, zpusobu je mnoho.
|
||
Beduin Profil * |
#3 · Zasláno: 16. 7. 2009, 19:11:52
Takže jsem to vyřešil právě kombinací in_array() a foreach().
foreach(explode(" ",$prispevek) as $slovo) { if(in_array($slovo,$spamwords)) echo "Váš příspěvek obsahuje slova, která se běžně používají ve spamu. Prosím, použijte nějaká jejich synonyma nebo je zahvězdičkujte."; exit; } |
||
fajzen Profil |
#4 · Zasláno: 16. 7. 2009, 19:22:30
Možno poviem hlúposť, ale keď je to takto napísane: foreach(explode(" ",$prispevek) as $slovo), nebude sa explode volať pri každom prechode cyklu foreach?
|
||
Majkl578 Profil |
#5 · Zasláno: 16. 7. 2009, 19:41:23 · Upravil/a: Majkl578
fajzen
si to zkus: function test() { echo "CALL\n"; return range(1, 10); } foreach(test() as $int) { echo $int, "\n"; } |
||
Nox Profil |
#6 · Zasláno: 17. 7. 2009, 00:31:29
Beduin
if( preg_match("/(".implode("|",$spam_slova).")/", $komentar) ){ /* jsou tam spam slova */ } |
||
Časová prodleva: 16 let
|
0