删除除换行符,回车符,制表符和间距之外的所有控制和非打印字符

时间:2013-04-09 11:11:40

标签: php regex preg-replace

原谅我,但是当我看到正则表达时,它就像一只盯着新篱笆的山羊。

这个(/\p{C}+/u)似乎运行正常,但删除了换行符/回车符和标签:

$str = "
<pre>
    te" . chr(31) . "st

   test
</pre>
";

echo $str;
echo preg_replace('/\p{C}+/u', '',$str);

我如何留下这些?

1 个答案:

答案 0 :(得分:3)

尝试使用:

$str = "
<pre>
    te" . chr(31) . "st

   test
</pre>
";

echo $str;
echo '=====================================',"\n";
echo preg_replace('/[^\P{C}\s]+/u', '',$str);

我刚刚否定了属性\p{C}并将其添加到包含所有空格字符的否定字符类中。