Re: Question on explode and join.

From: Date: Wed, 13 Sep 2006 17:07:17 +0000
Subject: Re: Question on explode and join.
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-241738@lists.php.net to get a copy of this message
On 9/13/06, Beauford <php-user@netscan.ca> wrote:
Hi, I have a form which I want to check for inappropriate words before it is posted. I have used explode to put the string into an array using a space as the delimiter and then I check it against another array that contains the inappropriate words. I then replace the inappropriate words with *'s and join the array back into a string. This works perfectly except for one thing. If the word in the string has a any kind of punctuation after it (period, comma) it won't be matched. So if moron is an inappropriate word then "you are a moron" works, but "you are a moron." won't. Any ideas? Thanks This is my code. function badwords($string) {
        $language = array(contains the inappropriate words);
        $words = explode(" ",$string);
        $count = count(explode(" ", $string));
        for($i = 0; $i < $count; $i++) {
                if(in_array(strtolower($words[$i]), $language)) {
                        $words[$i] = "*****";
                }
        }
        $newcomments = join(" ",$words);
        return $newcomments;
}
Perhaps you could try an approach like this: <?php $dirty = array( 'ipsum', 'eloquentiam', 'Vero' ); $string = "Lorem ipsum ius no etiam veniam, usu alii novum ne, sed cu molestiae eloquentiam. Vero invenire philosophia est ne, quo nemore timeam an."; $clean = str_replace($dirty, '*', $string); echo "<br>string: ". $string; echo "<br>clean: ". $clean; GENERATES: string: Lorem ipsum ius no etiam veniam, usu alii novum ne, sed cu molestiae eloquentiam. Vero invenire philosophia est ne, quo nemore timeam an. clean: Lorem * ius no etiam veniam, usu alii novum ne, sed cu molestiae *. * invenire philosophia est ne, quo nemore timeam an.

« previous php.general (#241738) next »