i have many spammers at my sites so i have developed a function which removes site names or just swear words from a string.
Here is a function:
usage example:
output will be:
Here is a function:
PHP Code:
function gum_banned_words($str,$words)
{
$found_words = gum_banned_words_check($str,$words);
//Developed by gumslone from coding-talk.com
foreach ($found_words as $word) {
$word_length = strlen($word);
$str_length = strlen($str);
$i = 0;
$n = 0;
while($i<$word_length)
{
if (preg_match('/[0-9A-Za-z]/',$str[$n]))
{
$find = "/".$word[$i]."/i";
if (preg_match($find, $str[$n]))
{
if($i==0) $result['start'] = $n;
if($i==($word_length-1))
{
$result['end'] = $n+1;
break;
}
$i++;
}
else
{
$i=0;
}
}
$n++;
if($n>$str_length)break;//prevent infinite loop
}
$str = substr($str, 0, $result['start']).substr($str, $result['end']);
}
$found_word2 = gum_banned_words_check($str,$words);
if(is_array($found_word2)) $str = gum_banned_words($str,$found_word2);
return $str;
}
function gum_banned_words_check($str, $words)
{
$clean_string = preg_replace('/[^[:alnum:]]/', '', $str);
foreach ($words as $word) {
$find = "/".$word."/i";
if (preg_match($find, $clean_string)) $found_words[] = $word;
}
return $found_words;
}
usage example:
PHP Code:
$words = array('admob','inmobi','http');
$text = 'admob sucks http://admob.com A:d:-mOb, and i n m o :b --i';
echo gum_banned_words($text,$words);
Code:
sucks ://.com , and
Comment