2013-02-09 82 views
3

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

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

在此先感谢。

回答

8

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

您可以使用mb_substr(),它的工作原理几乎相同的方式为SUBSTR但不同的是,你可以添加到指定的编码类型的新参数,是否为UTF-8或不同的编码。

试试这个:

$str = mb_substr($article['CBody'], 0, 20, 'UTF-8'); 

echo utf8_decode($str); 

希望这有助于。

+1

哇,它为我工作。我真的很感激,我正在寻找它约3个小时。再次感谢:) – 2013-02-09 06:55:10