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.