[ gradimir s. @ 19.06.2010. 12:46 ] @
Pozdrav,
Imam sajt na kom korisnici dodavaju vlastiti sadržaj (fore, viceve i sl). Hoću da ubacim neke nepoželjne reči (psovke i sl.) koje se nebi upisivale u bazu kada bi ih korisnik unio. Koristim phpmyadmin, da li mi neko može pomoći oko ovog?
PS. Početnik sam za php i mysql, zato se izvinjavam ako je ovo neko noob pitanje i sl.
[ maksvel @ 19.06.2010. 13:25 ] @
Ovo je pitanje pre za PHP - treba ti neki word-cenzoring, kao što ima ES npr. Po unosu sadržaja, parsira se isti i, ako sadrži te reči, stavlja zvezdice ili upozorava itd.
Spisak nedozvoljenih reči možeš držati u fajlu npr.
Verujem da ima tih skripti na netu, npr. http://script.wareseeker.com/PHP/php-censor.zip/14378
[ mitke013 @ 19.06.2010. 15:37 ] @
Pretpostavljam da radis validaciju objekta pre nego sto ga upises u bazu;
Code:

  foreach (Forbiddenword::getAll() as $word){
    if (preg_match('/[ \.]?' . $word->name . '[ \.]?/i', $this->description)){
      $this->getErrorStack()->add('description', 'Do not use forbidden words'); // ili return false, zavisno od tvog programa
        break ;
    }
  }


Znaci uzmes listu zabranjenih reci i za svaku rec uradis preg_match u 'description' polju (tj. onoga sto je korisnik uneo). Ako postoji neka od zabranjenih reci, upozoris korisnika da bude kulturniji.
[ batika @ 20.07.2010. 14:04 ] @
Mislim da ti je brze da napravis niz sa nepozeljnim recima i da koristis str_replace - brzi je od preg_match

npr.

Code:

$ban[] = '.ebi';
$ban[] = 'mrs';


i onda ide provera kao sto Mitke rece


Code:


foreach($ban as $b) {
  $text = str_replace($b, '', $text);
}



a ako hoces samo upozorenje da das korisniku onda radis str_pos koji ti pronalazi rec u tekstu