Как удалить невидимые символы из текста, мешающие получить данные по ajax?

Тема в разделе "Как сделать...", создана пользователем dandandan, 13 янв 2012.

  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    C помощью json получаю данные (jquery). Кодировка УТФ8. Урезанный файлик приаттачен. Если открыть блокнотом этот файлик, то увидите 2 квадратика потом текст, потом снова 2 квадратика. Как избавиться от этих квадратиков?
    Функция ord() выдает код 128 и 226 для квадратиков. Пробовал через preg_replace(ord()) - не удаляются.

    p.s. Симоволы появились по ходу дела из-за того, что пользователи редактировали текст в ворде, а затем, скопировав оттуда, вставили в форму и сохранили.

    И второй вопрос есть ли какая-либо спецфункция для экранирования и очистки передаваемых данных от лишних символов, с которыми ява скрипт через AJAX не дружит. Например сейчас удаляю переводы строки с помощью preg_replace, Экранирую двойные кавычки.
     

    Вложения:

    • test.txt
      Размер файла:
      16 байт
      Просмотров:
      13
  2. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    724
    Симпатии:
    314
    Если код символов всегда больше, чем 127, то можно как-то так замутить:
    PHP:
    $int "



text



";
    echo 
    var_dump(filter_var($intFILTER_SANITIZE_STRIPPEDFILTER_FLAG_STRIP_HIGH)); 
    Как видно, на выходе мы имеем 4 символа.
    В переменную $int вставьте свои квадратики, ибо здесь они не отображаются :)

    Работает в PHP начиная с 5.2.0
     
    dandandan нравится это.
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Надо будет посмотреть версию php на хостинге.

    Может что-то похожее с помощью регулярного выражения можно "замутить" ? Вот только в таком виде регулярок я уже не силен.
     
  4. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    А после iconv они пропадают?
    Код:
    $ file -I test.txt
    test.txt: text/plain; charset=utf-8
     
  5. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    724
    Симпатии:
    314
    после iconv они просто преобразуются в видимые символы
    Код:
    

text


     
  6. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    У меня получилось удалить их регуляркой /\W+/. Регулярка /\P{L}+/ тоже сработала.
     
    dandandan нравится это.
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Иконв выдает ошибку. Точную формулировку сейчас не скажу, но что-то вроде недопустимые символы.

    Регулярку попробую сегодня вечером.
     
  8. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Видимо у вас кодировка win-1251. У меня notepad++ так же преобразовывал эти символы в кодировку 1251
     
  9. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    function clear_string($var) {
    $var = (string) (phpversion() > '5.2.0') ? preg_replace('/[^\w\pL_-\s]/ui', '', $var) : filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
    }
    как то так должно помочь
    по крайней мере у меня чистит, если пых маленький то будет регулярка еси 5,2> то фильтр