* Thus wrote Richard Davey ([EMAIL PROTECTED]): > Hello Andy, > > Sunday, April 25, 2004, 3:22:29 PM, you wrote: > > AB> i have to make an adult content censoring system so people cant post "bad" > AB> words on any public viewable posts. i know preg_replace and possibaly > AB> preg_match would be a huge help but im wondering how i would put all the bad > AB> words in a file (textfile) 1 word on a line and have it look through the > AB> file for the words? when it finds a match then it will either replace the > AB> word with * but better yet tell the user that content in the post was > AB> rejected because of bad content and take them back to the form with the > AB> stuff they typed in it... > > The way I do it on a piece of forum software I wrote on a VERY popular > web site was as follows: > > Create an include file which contains all your badwords in an array, > like: > > $badword[] = 'well'; > $badword[] = 'you'; > $badword[] = 'get'; > $badword[] = 'the'; > $badword[] = 'idea'; > > Then I have a simple function as follows: > > function APL_Func_BadWord ($text) > { > global $badwords; > > // This will check our given text against the badword list. It > does it slightly differently > // in that instead of firing up the regular expression engine, > we use a more simple but just as effective technique: One advantage with using preg*, is you can have more flexible matching instead of having a real large list of bad words:
$badword[] = '/suck(er|ing|ed)?/i'; Also instead of str_replace scanning the whole string 5 time to replace the 5 items, its only scanned once, replacing up to five things. So depending on how large your list of words are and how large the content is you scanning, preg_* might be a little more efficient. And then there is the possiblity that the users might get smart and start entering things like: s-u-c-k One way to fix that is to replace all Non-word characters in the subject string with null: preg_replace('/\W/', '') Of course that wont work if they use L337 or html tags. Curt -- "I used to think I was indecisive, but now I'm not so sure." -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php