尽管http://it2.php.net/manual/en/reference.pcre.pattern.modifiers.php完全没有提及它,但是在PHP 5.3.4之前,PCRE似乎无法正常使用utf8字符串,即使使用'u'修饰符(它应该支持utf8,以及根据上述文档,即使从PHP 4.something开始也可以获得
preg_split("/\W+/u", $someUtf8String)
将在PHP 5.3.4及更高版本上按预期工作,但会破坏字符串上的字符串,就像它们是非单词一样,在旧版本上
请参阅: http://3v4l.org/ERDp5 如果您对该字符串是否实际上是utf8编码有疑问(我有),您可以尝试: http://3v4l.org/6XnOj http://3v4l.org/mak33
有一个错误仅在5.3.4中修复,或者不支持utf8(在这种情况下我想知道为什么'u'修饰符可用)
问题是:旧的PHP版本是否有解决方法? 我需要让\ W在PHP 5.1.6上的utf8字符串上正常工作
答案 0 :(得分:3)
mb_split
怎么样?
mb_split("\W+", "histórica");
注意:没有分隔符