0

如何删除所有控制字符但排除换行符(U+2028)字符?

preg_replace('/[\p{Cc}]/', '', $response);

http://uk.php.net/manual/en/regexp.reference.unicode.php

4

2 回答 2

2

您可以使用负前瞻

/(?!\x{2028})\p{Cc}/u

您还需要启用UTF8 模式以匹配 unicode。

于 2013-03-01T11:02:54.400 回答
2

您可以使用双重否定

preg_replace('/[^\P{Cc}\x{2028}]/u', '', $response);

\P{Cc}是否定的\p{Cc}

[^...]是否定字符类

所以你匹配所有不是不是控制字符的东西,那不是\x{2028}。这样您就可以从预定义的字符类中排除某些字符。

于 2013-03-01T11:06:12.913 回答