为什么 substr() 对阿拉伯字符串的计数错误?

why substr() wrong counts for Arabic string?

我有一个包含 9 个阿拉伯字符的 php 变量。但是当我在substr()中设置9时,输出的是4字符。为什么 ?我该如何解决?

here 是我的演示。

这是我的代码:

$str = 'سلام جهان'; 
// the number of character: 9 character {س|ل|ا|م| |ج|ه|ا|ن}

echo substr($str, 0, 9);

// output: سلام

?>

尝试使用等效的多字节:

mb_internal_encoding("UTF-8");
$string = "سلام جهان";
$mystring = mb_substr($string,5,1);
echo $mystring;

您还可以使用 my_substr 设置标志:

mb_substr($string, 5,1, "utf-8");