За последние 24 часа нас посетили 43753 программиста и 1813 роботов. Сейчас ищут 839 программистов ...

Антиспам, антимат фильтр по словам

Тема в разделе "PHP для новичков", создана пользователем Ігор, 21 фев 2009.

  1. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Может тема есть. Но я не нашел конкретно, что мне нужно.
    Как данные введенные пользователем отфильтровать (убрать определенные слова)
    Идея такая: все что нужно отфильтровать вводится в текстовый файл, потом считывается в массив и выполняется поиск каждого из членов массива в тексте.
    По-моему сложновато...
     
  2. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Может проще сразу сделать php ный файл с массивом и просто его инклюдить? Зачем каждый раз текстовый файл разбирать?


    P.S. А вообще ИМХО вещь эта определенно обречена на провал. Слишком уж много существует матерных слов и слишком много вариантов их написания :)

    A в чем сложность? Массив в str_replace запихнуть?
    PHP:
    1.  
    2. <?php
    3. $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
    4. $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
    5. ?>
    6.  
     
  3. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Ігор
    регуляром можно, в принципи это не тяжело
     
  4. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Ну хотябы убрать основное: типа порноспама, наиболее распространенные ругательства, и конечно же [a href="javascript:.......... :)
     
  5. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Просто думал, что есть проще варианты.
    ----------------------------
    А вообще-о мне хотелось не просто поменять ненужные слова, а вообще запретить добавлане такой записи.
     
  6. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Ігор
    а в чем сложность то? :) тот же регуляр
     
  7. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    alexeurodnepr Ясно :)
     
  8. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. function is_mat($str)
    4. {
    5.  return preg_match('/(?:wodr1|word2|word3)/i', $str);
    6. }
    7. ?>
    Проблема в том, что регистр учитывается. флаг "i" установлен....
    _____________________________________________________________________
    ДЛя латиницы все работает, для кириллицы -- ни в какую.
    Даже preg_match('/(абвг|latname)/i', strtolower($str)); учитывает регистр. Как не пойму.
    setlocale(LC_ALL, "ru_RU.utf8","et_EE.utf8"); ни к чему не привели.

    echo strtolower ("рврГНГШНоорвсгГНГШлло");
    работает как и нужно.
     
  9. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Неужели никто ничего сказать не может по этому поводу?
    PHP:
    1.  
    2. <?php
    3.    echo strtolower('БЛА-Бла-бЛа');    //тут все оК!
    4.    echo strtolower($_POST['var']);      //пишет какую-то чепуху
    5.    echo $_POST['var'];                     //Норма!
    6. ?>
    7.  
     
  10. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Встроенные строковые функции не работают с utf-8. http://php.net/mbstring
     
  11. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    return preg_match('/(?:wodr1|word2|word3)/i', $str);
    Как можно заменить на mb функции??

    А split можно использовать с utf-8? на локали работает..... Но где гарантии, что не будет проблем при выгрузке на сервер.