如何删除所有控制字符但排除换行符(U+2028
)字符?如何匹配排除特定字符的序列中的所有字符?
preg_replace('/[\p{Cc}]/', '', $response);
http://uk.php.net/manual/en/regexp.reference.unicode.php
如何删除所有控制字符但排除换行符(U+2028
)字符?如何匹配排除特定字符的序列中的所有字符?
preg_replace('/[\p{Cc}]/', '', $response);
http://uk.php.net/manual/en/regexp.reference.unicode.php
您可以使用双重否定
preg_replace('/[^\P{Cc}\x{2028}]/u', '', $response);
\P{Cc}
是\p{Cc}
[^...]
否定是否定的字符类
所以你匹配的一切,是不是不控制字符,这是不\x{2028}
。这样,您可以从预定义的字符类中排除某些字符。
没有考虑过'\ P',尽管它在OP链接到的PHP文档中被提及。 +1 – 2013-03-01 11:08:18
它不应该是'\ p {Cc}(?!\ x20)'吗? – sp00m 2013-03-01 11:05:22
@ sp00m:这将匹配任何控制字符,而不是*后跟*,换行符。 – 2013-03-01 11:06:19
+1这可能比双重否定更容易理解。 – stema 2013-03-01 11:10:39