Autor Zpráva
Beduin
Profil *
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
www.php.net/in_array nebo treba pres foreach testovat kazdou hodnotu, zalezi jen na tobe, zpusobu je mnoho.
Beduin
Profil *
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
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
fajzen
si to zkus:
function test()
{
   echo "CALL\n";
   return range(1, 10);
}

foreach(test() as $int) {
   echo $int, "\n";
}
Nox
Profil
Beduin
if( preg_match("/(".implode("|",$spam_slova).")/", $komentar) ){ /* jsou tam spam slova */ }

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: