我有一个包含新换行符和一些非utf8字符的字符串。我正在尝试编写一些将替换非utf-8字符的正则表达式,但它应该保留行结尾。
以下是我从PHP获得的内容
PHP preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
它剥离了非utf-8字符,但它也剥离了新的行结尾,我无法知道如何做到这一点。
我已经尝试/[\x00-\x1F\x80-\xFF\^\n]/
,但没有效果。
由于
答案 0 :(得分:1)
在开头添加否定前瞻。现在这不符合换行符。
preg_replace('/(?!\n)[\x00-\x1F\x80-\xFF]/', '', $string);
或
preg_replace('/(?![\n\r])[\x00-\x1F\x80-\xFF]/', '', $string);