ugrás a tartalomhoz

Szavak szűrése szótöredékekre ne szűrjön

Anonymous · 2006. Nov. 21. (K), 11.05
Irtam egy PHP fuggvenyt amely szavakat filterez.
A fuggveny igy nez ki :
  1. <?php  
  2. function filterBadWords($str)  
  3. {  
  4.     $badwords = array("dog");  
  5.     $replacechar = "*";  
  6.       
  7.     foreach ($badwords as $badword)  
  8.     {  
  9.        $str = eregi_replace($badwordstr_repeat($replacecharstrlen($badword)), $str);  
  10.     }    
  11.       
  12.     return $str;  
  13. }  
  14. ?>  
Ha meghivom a fuggvenyt a kovetkezo keppen:
  1. <?php  
  2. print filterBadWords("dogma");  
A kovetkezot latom :

***ma


Azt szeretnem most elerni, hogy ugyanezel a fuggvenyel precizebb szurest tudjak vegrehajtani. Peldaul ha megadom a "dog" szot akkor csak a szot filtereze. Ebben az esetben "dog" lesz -> "***" es dogma marad -> "dogma"

A felhasznalo amikor a szavakat megdaja a kovetkezo keppen szeretnem, hogy beirja oket egy textareaba.

dog {bastard} shame

A szavak el lesznek valasztva egy ures kockaval. Azok a szavak amelyek {} zarojelek kozt szerepelnek legyenek precizen filterezve, a tobbi nem.

Meg lehetne ezt oldani ?
Varok otleteket
 
1

ugyanaz, csak valódi regexszel

amonrpg · 2006. Nov. 21. (K), 15.33
szerintem (csak a lényegi sor):
  1. <?php $str = preg_replace('/\b'.$badword.'\b/i',str_repeat($replacecharstrlen($badword)),$str);