За последние 24 часа нас посетили 50925 программистов и 1740 роботов. Сейчас ищут 888 программистов ...

Фильтрация

Тема в разделе "PHP для новичков", создана пользователем 715kg, 1 окт 2013.

  1. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Здравствуйте. Есть фильтр, который фильтрует и переводит текстовые данные которые через него пробиваются.

    Код (Text):
    1. function name_filtered($name)
    2.   {
    3.     $name = iconv('UTF-8', 'windows-1251', $name);
    4.   $name = preg_replace("/[^(\x9|\xA|\xD|\x20-\xD7FF|\xE000-\xFFFD|\x10000\-\x10FFFF)]*/", "", $name);
    5.    if (strlen($name)<=50) return $name;
    6.   return substr($name,0,50).'... ';
    7.  }
    Но а как быть с таким текстом?

    ЧЁРНЫЕ ВОЛКИ 18+ 24/7 ~~~★~~❹~~❼~~★~~~~~~~~~~

    Когда этот текст пролезает через функцию, то на выходе получаем (Ничего). Не чего не выводится. Подскажите как сделать чтобы функция обрабатывала текст такого вида. В тексте видимо какие то символы ей не понятны.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а что она фильтрует вы сами понимаете?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    "/[^(\x9|\xA|\xD|\x20-\xD7FF|\xE000-\xFFFD|\x10000\-\x10FFFF)]*/iu"

    Добавлено спустя 40 секунд:
    хотя не..
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А что должно получиться? Не понимаю.
     
  5. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    так кто что подскажет?)) Я так и не нашел решения(

    Добавлено спустя 47 секунд:
    Должен получится русский текст. И нормальные символы.
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    нахер это?
    Код (PHP):
    1. $name = preg_replace("/[^(\x9|\xA|\xD|\x20-\xD7FF|\xE000-\xFFFD|\x10000\-\x10FFFF)]*/", "", $name); 
    так нужно знать кодировку в которую конвертнули текст и перевести в utf-8.
    если вы точно не знаете в какую кодировку конвертирован текст, нужно будет сделать методом перебора по существующим кодировкам и попытаться конвертнуть в utf-8.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Так там же уже есть
    Код (PHP):
    1. $name = iconv('UTF-8', 'windows-1251', $name);
    2.  
     
  8. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Ребяят, эта функция кодирует UTF-8 в wind. И выводит русский текст. + Обрезает его до 50 символов. Все бы ничего, но если через функцию пропустить UTF-8 с какими то еще символами. Как я уже привел пример.

    ЧЁРНЫЕ ВОЛКИ 18+ 24/7 ~~~★~~❹~~❼~~★~~~~~~~~~~
    UTF-8 - Цифры - ~~~★~~вќ№~~вќј ~~~~~~~~~~ < И вот эти символы. То функция выдает ничего..

    Добавлено спустя 2 минуты 23 секунды:
    А нужно чтобы она либо убирала эти символы непонятные, или еще че нить с ними делала. Но на выходе все работало.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Я не знаю, что вы там мутите, но если вы не понимаете фразу " вам нужно знать кодировку конвертированной строки чтобы переводить ее в нужную для вас кодировку ", то можете сразу забить на это.