如何删除字符串中的所有不可打印字符并保留一些?
How to remove all non printable characters in a string and keep some?
我正在使用这个
$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);
那个正则表达式来自这个 link PHP: How to remove all non printable characters in a string?
正则表达式正在删除 \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);
试试这个
[\x00-\x1F\x7F\xA0[^\x0A^\x0d]]
解释:
x0A - 换行 (\n)
x0d - 回车 return (\r)
示例:
对原始正则表达式的最小更改:
/(?!\n|\r)[\x00-\x1F\x7F-\xFF]/u
使用否定先行来不匹配换行和回车 returns。
我正在使用这个
$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);
那个正则表达式来自这个 link PHP: How to remove all non printable characters in a string?
正则表达式正在删除 \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);
试试这个
[\x00-\x1F\x7F\xA0[^\x0A^\x0d]]
解释:
x0A - 换行 (\n)
x0d - 回车 return (\r)
示例:
对原始正则表达式的最小更改:
/(?!\n|\r)[\x00-\x1F\x7F-\xFF]/u
使用否定先行来不匹配换行和回车 returns。