| 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: 17 let
|
|||
0