这是我的代码
$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)
.
.
.
请帮帮我。非常感谢
答案 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)