* 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

Reply via email to