我在使用str_split时遇到了一些问题。它无法正常使用我的语言

时间:2017-01-15 18:41:27

标签: php html css

这是我的代码

     $string="رستوران";
     $arr = str_split($string);
     var_dump($arr);
     echo '<br>';
跑完后

    array (size=14)
    0 => string '�' (length=1)
    1 => string '�' (length=1)
    2 => string '�' (length=1)
    3 => string '�' (length=1)
    .
    .
    .

请帮帮我。非常感谢

4 个答案:

答案 0 :(得分:2)

使用以下

$arr = str_split_unicode($string);

创建一个处理此新呼叫的函数

function str_split_unicode($str, $l = 0) {
if ($l > 0) {
    $ret = array();
    $len = mb_strlen($str, "UTF-8");
    for ($i = 0; $i < $len; $i += $l) {
        $ret[] = mb_substr($str, $i, $l, "UTF-8");
    }
    return $ret;
}
return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);

}

答案 1 :(得分:1)

问题与str_split()功能无关。您必须将文件的字符编码更改为Unicode选项之一(UTF-8是最好的)。您正在使用的字符不受ANSI和ASCII编码的支持。

答案 2 :(得分:1)

您必须使用Multibyte String Functions来操作波斯语字符串。 您可以使用preg_split作为您的porpuse。

print_r(preg_split('//u', "رستوران ها", null, PREG_SPLIT_NO_EMPTY));
Output:
Array
(
    [0] => ر
    [1] => س
    [2] => ت
    [3] => و
    [4] => ر
    [5] => ا
    [6] => ن
    [7] =>  
    [8] => ه
    [9] => ا
)

答案 3 :(得分:0)

从PHP 7.4开始,您可以使用mb_str_split()函数:

$string="رستوران";
mb_str_split($string)