正则表达式删除非utf-8字符但新行

时间:2015-07-03 11:58:46

标签: php regex utf-8

我有一个包含新换行符和一些非utf8字符的字符串。我正在尝试编写一些将替换非utf-8字符的正则表达式,但它应该保留行结尾。

以下是我从PHP获得的内容

PHP preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);

它剥离了非utf-8字符,但它也剥离了新的行结尾,我无法知道如何做到这一点。

我已经尝试/[\x00-\x1F\x80-\xFF\^\n]/,但没有效果。

由于

1 个答案:

答案 0 :(得分:1)

在开头添加否定前瞻。现在这不符合换行符。

preg_replace('/(?!\n)[\x00-\x1F\x80-\xFF]/', '', $string);

preg_replace('/(?![\n\r])[\x00-\x1F\x80-\xFF]/', '', $string);