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

dandandan

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

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

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

Вложения

  • test.txt
    16 байт · Просмотры: 13
Если код символов всегда больше, чем 127, то можно как-то так замутить:
PHP:
$int = "



text



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

Работает в PHP начиная с 5.2.0
 
Надо будет посмотреть версию php на хостинге.

Может что-то похожее с помощью регулярного выражения можно "замутить" ? Вот только в таком виде регулярок я уже не силен.
 
А после iconv они пропадают?
Код:
$ file -I test.txt
test.txt: text/plain; charset=utf-8
 
после iconv они просто преобразуются в видимые символы
Код:


text


 
У меня получилось удалить их регуляркой /\W+/. Регулярка /\P{L}+/ тоже сработала.
 
А после iconv они пропадают?
Иконв выдает ошибку. Точную формулировку сейчас не скажу, но что-то вроде недопустимые символы.

Регулярку попробую сегодня вечером.
 
после iconv они просто преобразуются в видимые символы
Код:


text


Видимо у вас кодировка win-1251. У меня notepad++ так же преобразовывал эти символы в кодировку 1251
 
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> то фильтр
 
Назад
Сверху