Jump to content

Preg_replace whole word only


cesarcesar

Recommended Posts

Im trying to make a naughty word filter. It removes bad words fine, but instances where there is a bad word found in the text like "assist" and "asses" get caught in the filter as well. Strangely though if the sentence is: My asses to assist me." the clean version will read: My asses to ***ist me." It seems to clear the first use of the word in another word, but then blocks the rest. Any ideas? My script is below. Thanks.

 


function cleanWords($value) {

/*   strip naughty words   */
$bad_word_file = 'standards/badwords.txt';
$strtofile = fopen($bad_word_file, "r");
$badwords = explode("\n", fread($strtofile, filesize($bad_word_file)));
fclose($strtofile);

for ($i = 0; $i < count($badwords); $i++) {
	$wordlist .= str_replace(chr(13),'',$badwords[$i]).'|';
}
$wordlist = substr($wordlist,0,-1);

$value = preg_replace("/\b($wordlist)\b/ie", 'preg_replace("/./","*","\\1")', $value);	
return $value;

}

Link to comment
https://forums.phpfreaks.com/topic/195045-preg_replace-whole-word-only/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.