«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно удалить управляющие символы из строк PHP?

Как эффективно удалить управляющие символы из строк PHP?

Опубликовано 12 ноября 2024 г.
Просматривать:865

How to Effectively Remove Control Characters from PHP Strings?

Удаление управляющих символов из строк PHP

Вопрос: Изменение регулярного выражения для удаления управляющих символов

Разработчик PHP ранее использовал следующее выражение для удаления управляющих символов, таких как STX, из строка:

preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)

Однако результат оказался слишком ограничительным, что вызвало вопрос: как можно выборочно управлять персонажами? удалено?

A: Использование определенных классов символов для идентификации управляющих символов

Чтобы точно выбрать управляющие символы, можно использовать более конкретный класс символов:

preg_replace('/[\x00-\x1F\x7F]/', '', $input);

Это выражение соответствует символам с кодами ASCII в диапазоне \x00–\x1F и \x7F, включая первые 32 символа, и \x7F, который включает такие символы, как возврат каретки.

Сохранение основных символов, таких как разрывы строк

Если необходимо сохранить определенные символы, например перевод строки или возврат каретки, их escape-последовательности можно исключено:

preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);

В этом измененном выражении , \x0A (перевод строки) и \x0D (возврат каретки) исключены из символа. class.

Современный синтаксис и устаревание

Очень важно отметить, что прекращение поддержки ereg_replace в PHP 5.3.0 и его последующее удаление в PHP 7.0.0 требуют использование preg_replace вместо ereg_replace.

Наконец, класс символов для управления Символы

Для краткой и переносимой альтернативы можно использовать класс символов [:cntrl:]:

preg_replace('/[[:cntrl:]]/', '', $input);
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3