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');
没有任何帮助。非常感谢。
您需要通过在正则表达式中添加u
修饰符来为preg_split
启用utf-8模式:
preg_split("/[s]+/u", $original['text']);
您在尝试查找解决方案时提到的配置指令在这里没有任何作用。
$original = mb_split("[s]+", 'Šios baterijos kaista');
print_r($original);
结果:
Array
(
[0] => Šios
[1] => baterijos
[2] => kaista
)
注:
1( 使用mb_split时,不要忘记从regex模式中删除前导和尾部的"/"。
2( 只有在启用mbstring扩展时才有效。