在PHP5.1.6中使用\W和utf-8字符串进行preg_拆分:有解决方法吗?

在PHP5.1.6中使用\W和utf-8字符串进行preg_拆分:有解决方法吗?,php,utf-8,pcre,Php,Utf 8,Pcre,尽管没有提到它,PCRE似乎无法正确使用PHP 5.3.4之前的utf8字符串,即使使用“u”修饰符(该修饰符应该能够支持utf8,并且根据上述文档,即使在PHP 4.0之后也可以使用该修饰符) 将在PHP5.3.4及以上版本上按预期工作,但在较旧版本中,将中断字符(如óòúíì等)上的字符串,就像它们是非单词一样 见: 如果您对字符串是否为utf8编码有疑问(正如我所怀疑的),您可以尝试: 要么是有一个只在5.3.4中修复的bug,要么是不支持utf8(在这种情况下,我想知道为什么“u”修饰

尽管没有提到它,PCRE似乎无法正确使用PHP 5.3.4之前的utf8字符串,即使使用“u”修饰符(该修饰符应该能够支持utf8,并且根据上述文档,即使在PHP 4.0之后也可以使用该修饰符)

将在PHP5.3.4及以上版本上按预期工作,但在较旧版本中,将中断字符(如óòúíì等)上的字符串,就像它们是非单词一样

见: 如果您对字符串是否为utf8编码有疑问(正如我所怀疑的),您可以尝试:

要么是有一个只在5.3.4中修复的bug,要么是不支持utf8(在这种情况下,我想知道为什么“u”修饰符可用)

问题是:对于较旧的PHP版本是否有变通方法?
我需要\W在PHP5.1.6上正确处理utf8字符串

如何
mb_split

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

注意:没有分隔符。PHP5.1。与回答您的问题无关,但现在可能是计划升级的时候了:)对于Ray的观点,5.1.6是。肯定是时候升级了。基于安全更新,如果可能的话,我肯定会更新到至少5.3。请注意,Zend Server提供的稳定版本是5.4.x,因此现在是时候:P@Ray,是的,我知道,不幸的是PHP(或者至少是CentOS的打包方式)让这成为了一场噩梦,因为PHP5.3和更高版本是一个不同的包,不是说我不能升级,只是说做这件事有点头疼,它需要比它应该做的更多的时间和工作(应该只是一个“yum安装”或“yum更新”或任何命令行和几分钟,就像升级几乎所有其他东西一样)是的,谢谢!!mb_split是答案;只有在这种情况下,您必须删除分隔符(“/”和“/”),因此确切的代码是:mb_split(“\W+”,“whatèver,fóo--b–r”);4.3.4-5.5上的正确输出。7@matteo我不知道我为什么评论它!为其他人编辑文章。
mb_split("\W+", "histórica");