* 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