Я использую это
$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);
Это регулярное выражение по этой ссылке PHP: Как удалить все непечатаемые символы в строке?
Регулярное выражение удаляет \n
но я хотел бы сохранить это.
Что я должен делать?
Я думаю \n
является 000A
, поэтому я попробовал что-то вроде этого (это заставит все регулярные выражения перестать работать)
$string = preg_replace('/[\x00-\x1F\x7F\xA0[ˆ\x0A]]/u', '', $string);
Я ценю любую помощь.
Диапазон \x00-\x1F
содержит \x0A
,
Вы должны разделить этот диапазон.
$string = preg_replace('/[\x00-\x09\x0B-\x1F\x7F\xA0]/u', '', $string);
Минимальное изменение исходного выражения:
/(?!\n|\r)[\x00-\x1F\x7F-\xFF]/u
Использует отрицательный прогноз, чтобы не соответствовать переводам строки и возврату каретки.
попробуй это
[\x00-\x1F\x7F\xA0[^\x0A^\x0d]]
объяснение:
x0A — перевод строки (\ n)
x0d — возврат каретки (\ r)
пример: