使用utf8,substr无法正常工作

时间:2013-02-09 06:45:37

标签: php mysql utf-8 right-to-left substr

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

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

提前致谢。

2 个答案:

答案 0 :(得分:10)

  

如果您正在使用编码为UTF-8的字符串,则可能会丢失   尝试使用PHP substr获取其中一部分时的字符   功能。发生这种情况是因为UTF-8字符不受限制   到一个字节,它们具有可变长度以匹配Unicode字符,   1到4个字节之间。

您可以使用 mb_substr() ,它的工作方式与substr几乎相同,但区别在于您可以添加新参数来指定编码类型,无论是{{1}或者不同的编码。

试试这个:

UTF-8

希望这有帮助。

答案 1 :(得分:0)

使用此代替,这是额外的文字,使身体足够长。这将处理多字节字符。 http://php.net/manual/en/function.mb-substr.php