我正在使用 substr 方法来访问字符串的前 20 个字符。它在正常情况下工作正常,但是在使用 rtl 语言(utf8)时它给了我错误的结果(显示了大约 10 个字符)。我在网上搜索过,但发现对解决这个问题很有用。这是我的代码行:
substr($article['CBody'],0,20);
提前致谢。
我正在使用 substr 方法来访问字符串的前 20 个字符。它在正常情况下工作正常,但是在使用 rtl 语言(utf8)时它给了我错误的结果(显示了大约 10 个字符)。我在网上搜索过,但发现对解决这个问题很有用。这是我的代码行:
substr($article['CBody'],0,20);
提前致谢。
如果您使用的是编码为 UTF-8 的字符串,当您尝试使用 PHP substr 函数获取其中的一部分时,您可能会丢失字符。发生这种情况是因为 UTF-8 字符不限于一个字节,它们具有可变长度以匹配 Unicode 字符,介于 1 到 4 个字节之间。
您可以使用mb_substr(),它的工作方式几乎与 substr 相同,但不同之处在于您可以添加一个新参数来指定编码类型,无论是UTF-8
编码还是不同的编码。
尝试这个:
$str = mb_substr($article['CBody'], 0, 20, 'UTF-8');
echo utf8_decode($str);
希望这可以帮助。
改用这个,这里有额外的文本来使正文足够长。这将处理多字节字符。 http://php.net/manual/en/function.mb-substr.php