带有\ W的preg_split和PHP 5.1.6中的utf-8字符串:任何解决方法?

时间:2014-01-05 18:37:34

标签: php utf-8 pcre

尽管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字符串上正常工作

1 个答案:

答案 0 :(得分:3)

mb_split怎么样?

mb_split("\W+", "histórica");

注意:没有分隔符