PHP preg_split utf8个字符

时间:2013-02-28 14:13:31

标签: php cakephp preg-split

preg split和utf有问题。这是代码:

$original['words'] = preg_split("/[\s]+/", $original['text']);
print_r($original);

这是答案:

Array
(

    [text] => Šios baterijos kaista
    [words] => Array
        (
            [0] => �
            [1] => ios
            [2] => baterijos
            [3] => kaista

此代码在CakePHP框架中运行。请注意[文本]在单词之前正确显示,并且在分割进度中混乱。顺便说一句,我尝试使用这些:

mb_internal_encoding( 'UTF-8'); 
mb_regex_encoding( 'UTF-8');  
ini_set('default_charset','utf-8');

没有帮助。谢谢。

2 个答案:

答案 0 :(得分:11)

您需要为preg_split启用utf-8模式,方法是将u modifier添加到正则表达式中:

preg_split("/[\s]+/u", $original['text']);

您在尝试查找解决方案时提到的配置指令在此处不起作用。

答案 1 :(得分:0)

store.dispatch

结果:

$original = mb_split("[\s]+", 'Šios baterijos kaista');
print_r($original);

注意:

1)使用mb_split时,请不要忘记从正则表达式模式中删除开头和结尾的'/'。

2)仅在启用mbstring扩展名的情况下起作用。