On 9/13/06, Beauford <[EMAIL PROTECTED]> 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.

Reply via email to