我正在使用此
$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);
该正则表达式来自此链接PHP: How to remove all non printable characters in a string?
正则表达式正在移除\n
,但我想保留它。
我该怎么办?
我认为\n
是000A
,所以我尝试过这样的事情(这将使所有正则表达式停止工作)
$string = preg_replace('/[\x00-\x1F\x7F\xA0[ˆ\x0A]]/u', '', $string);
我感谢任何帮助。
答案 0 :(得分:1)
范围\x00-\x1F
包含\x0A
。
您必须拆分此范围。
$string = preg_replace('/[\x00-\x09\x0B-\x1F\x7F\xA0]/u', '', $string);
答案 1 :(得分:1)
对原始正则表达式的最小更改:
/(?!\n|\r)[\x00-\x1F\x7F-\xFF]/u
使用否定前瞻与换行和回车不匹配。
答案 2 :(得分:0)
试试这个
[\x00-\x1F\x7F\xA0[^\x0A^\x0d]]
<强>解释强>:
x0A - 换行(\ n)
x0d - 回车(\ r)
示例强>: