Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтрация слов 
:(
    Опции темы
JDmitry
Дата 23.6.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.3.2009

Репутация: нет
Всего: нет



Есть функция:
Код

function censure($text)
    {
        $sql = "SELECT * FROM ibf_badwords LIMIT 10";
        $bind = mysql_query($sql);
        While($lfx_rows = mysql_fetch_assoc($bind))
            $bad_wods[] = $lfx_rows["type"];
        $text2 = "";
        $regs = array();
        for($i=0;$i<sizeof($bad_wods);$i++)
        {
            $text_words = $bad_wods[$i];
            $text2 .= "";
            for($j=0;$j<strlen($text_words);$j++)
            {
                $text2 .= "([".strtolower($text_words[$j])."".strtoupper($text_words[$j])."+])";
            }
            $regs[] = $text2;
            $text2 = "";
        }
        $text = str_replace(Array(".","-","\\","*","!","`","#"),"",$text);
        for($i=0;$i<sizeof($regs);$i++)
            $text = preg_replace("/$regs[$i]/is","*****",$text);
        return $text;
    }

на выходе переменная $regs;
[fF+])([uU+])([cC+])([kK+])  // Слово Fuck
[1] => ([cC+])([uU+])([nN+])([tT+])
[2] => ([dD+])([iI+])([cC+])([kK+]) 
[3] => ([sS+])([hH+])([iI+])([tT+])
[4] => ([bB+])([iI+])([tT+])([cC+])([hH+])
[5] => ([cC+])([oO+])([cC+])([kK+])
[6] => ([mM+])([oO+])([tT+])([hH+])([eE+])([rR+])([fF+])([uU+])([cC+])([kK+])([eE+])([rR+])
[7] => ([sS+])([lL+])([uU+])([tT+]) 
[8] => ([pP+])([uU+])([sS+])([sS+])([yY+]) 
[9] => ([pP+])([rR+])([iI+])([cC+])([kK+])

Как мы видем каждое матерное слово разбиваеться на буквы и получем большую и маленькую букву после чего начинаем искать в тексте до тех пор пока весь текст не проверим на маты, всё работает отлично но когда я беру с базы 1500 записей слов то получаеться весь алфавит есть и через функцию не проходят слова
Помогите улучшить механизм регулярки! спасибо
PM MAIL   Вверх
skyboy
Дата 23.6.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



есть вариант проще и быстрее.
перевести в нижний регистр.
убрать все повторяющиеся буквы("fuucckk"=> "fuck").
сравнить с эталоном.
не защищает от неграмотных или хитроумных("fukk", "fack" etc)
есть вариант правильнее, но напряжнее. 
модерация.

PM MAIL   Вверх
JDmitry
Дата 23.6.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.3.2009

Репутация: нет
Всего: нет



да я всё понемаю как сделать да вот записать не могу с логикой проблем нет! 
Если можно пример пожалуйста  smile 
PM MAIL   Вверх
Cupon
Дата 26.6.2009, 06:27 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



по мне так проблему "асамБЛЯ" можно решить только модерированием, "велик и могуч Русский язык".. и регулярные выражения тут не помогут, разве что сделать словарь с определенными словами..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.