2013-03-01 55 views

回答

2

你可以使用一个negative lookahead

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

您还需要启用UTF8 mode匹配的Unicode。

+0

它不应该是'\ p {Cc}(?!\ x20)'吗? – sp00m 2013-03-01 11:05:22

+0

@ sp00m:这将匹配任何控制字符,而不是*后跟*,换行符。 – 2013-03-01 11:06:19

+0

+1这可能比双重否定更容易理解。 – stema 2013-03-01 11:10:39

2

您可以使用双重否定

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

\P{Cc}\p{Cc}

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

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

+0

没有考虑过'\ P',尽管它在OP链接到的PHP文档中被提及。 +1 – 2013-03-01 11:08:18