Задать вопрос
@rv9ufz
Кратко о себе

PHP, как отфильтровать нежелательные символы UTF-8 в текстовой строке?

Суть проблемы: есть произвольная входная текстовая переменная, куда могут попадать различные непотребства: смайлы, спецсимволы и так далее, из-за чего при дальнейшем выводе в браузере может получиться каша.

Гуглил различные решения, перепробовал все из имеющихся, например, отсюда https://stackoverflow.com/questions/1176904/php-ho...

Такие варианты, как
preg_replace( '/[^[:print:]]/'
Или
filter_var($input, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);

Работают, убирают из строки всю ерунду, но включая кириллицу. Остаются только символы английской раскладки.

Подскажите, пожалуйста, какой-нибудь годный вариант фильтрации, убирающий все непечатаемые символы, но не затрагивающий различные раскладки клавиатуры.
  • Вопрос задан
  • 388 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
php666
@php666
PHP-макака
при дальнейшем выводе в браузере может получиться каша
что значит каша?
В какой кодировке данные в базе? В какой кодировке ответ сервера?

Есть мнение, что надо просто унифицировать кодировку проекта к utf8mb4 и не заниматься ерундой.
Ответ написан
Комментировать
@galaxy
Юникод - это сложно. Надежнее всего оставить ascii и нужный алфавит (русский, например), рейнжи должны работать ([а-я] или другие варианты).

Если нужны любые алфавиты, фильтруйте по пропертям.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽