6

我正在使用 substr 方法来访问字符串的前 20 个字符。它在正常情况下工作正常,但是在使用 rtl 语言(utf8)时它给了我错误的结果(显示了大约 10 个字符)。我在网上搜索过,但发现对解决这个问题很有用。这是我的代码行:

substr($article['CBody'],0,20);

提前致谢。

4

2 回答 2

12

如果您使用的是编码为 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); 

希望这可以帮助。

于 2013-02-09T06:50:20.397 回答
0

改用这个,这里有额外的文本来使正文足够长。这将处理多字节字符。 http://php.net/manual/en/function.mb-substr.php

于 2013-02-09T06:48:27.710 回答