За последние 24 часа нас посетили 35111 программистов и 1737 роботов. Сейчас ищут 755 программистов ...

Антимат

Тема в разделе "PHP для новичков", создана пользователем Panich, 18 авг 2012.

  1. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Есть:
    Код (Text):
    1. function antimat($str)
    2. {
    3.    $s = '[^\wа-я]*?';
    4.    $cenzur = '<font color=\"red\">\"РОМАШКА\"<font>';
    5.    $ArrayPattern = array(
    6.    '[^вvw]'.$s.'[еeё]'.$s.'[бb]',
    7.    '[eе]'.$s.'[бb]'.$s.'[aа]',
    8.    '[лl]'.$s.'[оo0]'.$s.'[хxh]',
    9.    '[еe]'.$s.'[лl]'.$s.'[дd]'.$s.'[аa@]',
    10.    '[мm]'.$s.'[uyу]'.$s.'[дd]'.$s.'[^рpr]',
    11.    '[пp]'.$s.'[иiеe]'.$s.'[зz3]'.$s.'[дd]',
    12.    '[^ю]'.$s.'[бb]'.$s.'[лl]'.$s.'(?:я|ja|j@)',    
    13.    '[мm]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]',
    14.    '[дd]'.$s.'[rpр]'.$s.'[аa@оo0]'.$s.'(?:[ч4]|ch|сh)',
    15.    '[хxh]'.$s.'[уyuеe]'.$s.'(?:[ийijрprеёeяюлl]|ja|jа|ju|jи)',
    16.    '[зz3]'.$s.'[аa@]'.$s.'[лl]'.$s.'[уyu]'.$s.'[пp]',
    17.    '[гg]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]'.$s.'[оo0]',
    18.    '[пp]'.$s.'[иiеe]'.$s.'[дd]'.$s.'[аa@оo0иiрpr]'.$s.'[^гgфf]',
    19.    '[жg]'.$s.'[оo0]'.$s.'[пp]',
    20.    '[чhс4]'.$s.'[лl]'.$s.'[еe]',
    21.    '[cсs]'.$s.'[уyu]'.$s.'[к4чk]'.$s.'[аиуuyiak]',
    22.    '[бb]'.$s.'[лL]'.$s.'[яеey]',
    23.    );
    24.    foreach($ArrayPattern as $key => $value)
    25.    {
    26.    $Pattern[] = '/(.*?)(?:[^\s]*' . $value . '[^\s]*)(.*?)/is';
    27.    }
    28.    $no_mat =  preg_replace($Pattern , "\\1". $cenzur . "\\2", $str);
    29.    return $no_mat;
    30. }
    31. $massage = antimat($message);
    Если находит матерное слово,то бирёт весь текст и каждое слово заменяет на "РОМАШКУ",а в базе: <font <font <font <font <font color='red'>"РОМАШКА"<font> и т.д....
    Нуждаюсь в помощи!

    П.С. Или,на крайний вариант,может кто своим скриптом поделится,ссылку даст,а то гугл ничего нормального выдавать не хочет!
     
  2. Код (Text):
    1. $cenzur = '<font color=\"red\">\"РОМАШКА\"</font>';
    font закрывать надо.
    и зачем там слэши?
    Код (Text):
    1. $cenzur = '<font color="red">"РОМАШКА"</font>';
     
  3. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    написал 4 слова-одно из них в тексте матерное.
    В базу занесено:
    Код (Text):
    1. <font <font <font <font <font <font <font <font <font color="red">"РОМАШКА"</font> <font <font <font <font <font <font <font <font <font color="red">"РОМАШКА"</font>
    Я пробовал уже как Вы говорите-ничего не получается...:(
    Попробовал сделать так:
    Код (Text):
    1. static $ArrayPattern = null;
    2. if (!$ArrayPattern)
    3. {
    4. $ArrayPattern = array(...
    -подсказали тут на одном форуме-ничего не получилось-функция вроде перестала копировать <font постоянно,но теперь все слова,которые до мата были просто отсекаются,а которые потом есть (включая матерное) превращаются в "РОМАШКУ"...
    Короче,на трёх форумах пытаюсь добиться помощи-ни у кого не получается...
     
  4. странно... у меня работает нормально.
    замени return $no_mat; на echo $no_mat; и посмотри что получится
     
  5. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Вот и мне странно-потому,что на другом сайте (только не в коменах,а в чате) применял и всё нормально пашет...бред...
    Уже два дня как голову ломаю!
    Вот что выдало:
    Код (Text):
    1. "РОМАШКА" "РОМАШКА" "РОМАШКА"
    2. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\classicorange\test_massage.php:139) in Z:\home\localhost\www\classicorange\test_massage.php on line 162
    Посоветовали вставить "/uis"...и-и-и-и-и-и ВСЁ РАБОТАЕТ!!!

    Спасибо большое за внимание!!!