【发布时间】:2013-02-09 06:45:36
【问题描述】:
我正在使用 substr 方法来访问字符串的前 20 个字符。它在正常情况下工作正常,但在使用 rtl 语言(utf8)时,它给了我错误的结果(显示了大约 10 个字符)。我在网上搜索过,但发现对解决这个问题很有用。这是我的代码行:
substr($article['CBody'],0,20);
提前致谢。
【问题讨论】:
标签: php mysql utf-8 right-to-left substr
我正在使用 substr 方法来访问字符串的前 20 个字符。它在正常情况下工作正常,但在使用 rtl 语言(utf8)时,它给了我错误的结果(显示了大约 10 个字符)。我在网上搜索过,但发现对解决这个问题很有用。这是我的代码行:
substr($article['CBody'],0,20);
提前致谢。
【问题讨论】:
标签: php mysql utf-8 right-to-left substr
如果您使用编码为 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
【讨论】: