Napísal som si funkciu pre detekciu nadávok, akurát mne z nepochopiteľných dôvodov nefunguje :-(
tu je:
function nadavky($retazec) {
$array = array("lalala", "bububu"); //dajme tomu, že toto sú nadávky ;-)
foreach($array as $a){
if(ERegI (".*$a.*", $retazec)==true) {
return true;
} else {
return false;
}
}
}
No a problém je taký, že keď napíšem niečo ako:
if(nadavky("bububu")) echo"Nadávka";
else echo "Nie je nadávka";
tak mi to vypíše, že to nadávka nie je; keď tam dám lalala tak to funguje
(aj textlalalatext ale nie textbububutext)
co třeba
if (nadavky=='bububu'):
echo 'nadávka';
else:
echo 'neni nadávka';
endif;
?
if(ERegI (".*$a.*", $retazec)==true) {
$ je specialny znak, v lala to najde to a, napis to takto
if(ERegI (".*" . $a . ".*", $retazec)==true) {
Columbo: Tak sa to moc nedá ;-)
lacop: to stále nefunguje, malo by to, podľa všetkého, ale...
funguje to iba pre prvý prvok poľa
aha, to else return false zmaz, ono to skontroluje prvy prvok a ak neni tak zavola return co skonci funkciu, pouzivaj len to return true :
function nadavky($retazec) {
$array = array("lalala", "bububu"); //dajme tomu, že toto sú nadávky ;-)
foreach($array as $a){
if(ERegI (".*$a.*", $retazec)==true) {
return true;
}
}
return false;
}
Proč zbytečné regexpy?
stačilo by něco jako
function nadavky($text){
$array = ('Nipal', 'microsoft', 'čssd');
foreach($array as $value){
if(stristr($text, $value) !== false){
return true;
}
else{
return false;
}
}
}
if(nadavky($_POST['formularik']) === true){
echo 'Tak tohle nechci slyset!';
}
Už zase? Až budete kopírovat funousův skript k použití, nezapomeňte jej nejprve projet funkcí $skript = str_replace('Nipal','funous',$skript);
to ale ponekud odrovna detekci nevhodnych slov. Protoze zminovat funouse je nadmiru vhodne... Mozna jeste vhodnejsi.
Řešení pomocí cyklu je pomalé. Použij:
if(eregi('lalala|bububu|hehe', $retazec)) echo 'Nadavka';
stejně to je imho k ničemu
Stejně si myslím že řešení pomocí cyku je rychlejší neš posixové regulární výrazy...
Podle mě je nejlepší na sprostá slova tzv. moderátor - musí všechna znát, a odměňovat autory příspěvků se sprostými slovy tím, že je smaže.
Richarde mohl bys prosím smazat Nípala? Zle se o mě vyjádřil.