cesarcesar Posted March 12, 2010 Share Posted March 12, 2010 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.