Пример кода для анализатора комментариев - PullRequest
3 голосов
/ 02 февраля 2010

Любой знает любой пример php (в идеале codeigniter) кода для анализа комментариев, отправленных пользователями. Удалить ненормативную лексику, теги HTML и т. Д.

1 Ответ

1 голос
/ 02 февраля 2010

Попробуйте strip_tags , чтобы избавиться от любого отправленного HTML. Вы можете использовать htmlspecialchars для экранирования тегов, если вы просто хотите убедиться, что html не отображается в комментариях - согласно примеру Matchu, с ним будет происходить меньше непреднамеренных эффектов, чем с strip_tags.

Для фильтра слов, в зависимости от того, насколько важны вы, в Интернете есть много примеров, от simple до complex . Вот код из примера Джейка Олефски (простой, связанный ранее):

<?
//This is totally free to use by anyone for any purpose.

// BadWordFilter
// This function does all the work. If $replace is 1 it will replace all bad words
// with the wildcard replacements.  If $replace is 0 it will not replace anything.
// In either case, it will return 1 if it found bad words or 0 otherwise.
// Be sure to fill the $bads array with the bad words you want filtered.
function BadWordFilter(&$text, $replace)
{
    //fill this array with the bad words you want to filter and their replacements
    $bads = array (
        array("butt","b***"),
        array("poop","p***"),
        array("crap","c***")
    );

    if($replace==1) {                               //we are replacing
        $remember = $text;

        for($i=0;$i<sizeof($bads);$i++) {           //go through each bad word
            $text = eregi_replace($bads[$i][0],$bads[$i][5],$text); //replace it
        }

        if($remember!=$text) return 1;              //if there are any changes, return 1

    } else {                                        //we are just checking

        for($i=0;$i<sizeof($bads);$i++) {           //go through each bad word
            if(eregi($bads[$i][0],$text)) return 1; //if we find any, return 1
        }   

    }
}

//this will replace all bad words with their replacements. $any is 1 if it found any
$any = BadWordFilter($wordsToFilter,1); 

//this will not repace any bad words. $any is 1 if it found any
$any = BadWordFilter($wordsToFilter,0); 

?>

Еще много примеров этого можно легко найти в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...