Как удалить все непечатаемые символы в строке и сохранить некоторые из них?

Я использую это

$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);

Это регулярное выражение по этой ссылке PHP: Как удалить все непечатаемые символы в строке?

Регулярное выражение удаляет \n но я хотел бы сохранить это.
Что я должен делать?

Я думаю \n является 000A, поэтому я попробовал что-то вроде этого (это заставит все регулярные выражения перестать работать)
$string = preg_replace('/[\x00-\x1F\x7F\xA0[ˆ\x0A]]/u', '', $string);

Я ценю любую помощь.

1

Решение

Диапазон \x00-\x1F содержит \x0A,

Вы должны разделить этот диапазон.

$string = preg_replace('/[\x00-\x09\x0B-\x1F\x7F\xA0]/u', '', $string);
1

Другие решения

Минимальное изменение исходного выражения:

/(?!\n|\r)[\x00-\x1F\x7F-\xFF]/u

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

1

попробуй это

[\x00-\x1F\x7F\xA0[^\x0A^\x0d]]

объяснение:

x0A — перевод строки (\ n)

x0d — возврат каретки (\ r)

пример:

https://regexr.com/3k3bm

0
По вопросам рекламы [email protected]