PHP preg_split utf8个字符

问题描述 投票:5回答:2

有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');

没人帮忙。谢谢。

php cakephp preg-split
2个回答
11
投票

您需要通过将preg_split u添加到正则表达式来为modifier启用utf-8模式:

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

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


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

结果:

Array
(
    [0] => Šios
    [1] => baterijos
    [2] => kaista
)

注意:

1)使用mb_split时,不要忘记从正则表达式模式中删除前导和尾随'/'。

2)仅在启用mbstring扩展时有效。

© www.soinside.com 2019 - 2024. All rights reserved.