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 :

<?php
function filterBadWords($str)
{
	$badwords = array("dog");
	$replacechar = "*";
	
	foreach ($badwords as $badword)
	{
       $str = eregi_replace($badword, str_repeat($replacechar, strlen($badword)), $str);
	}  
	
	return $str;
}
?>
Ha meghivom a fuggvenyt a kovetkezo keppen:

<?php
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):
<?php $str = preg_replace('/\b'.$badword.'\b/i',str_repeat($replacechar, strlen($badword)),$str);