Удаление управляющих символов из строк 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