最后的特殊字符的php substr结果是questionmark

时间:2011-06-06 20:43:48

标签: php joomla substr

当我在php中使用substr()函数时,我会在字符串末尾出现一个带问号的问号(带有问号的正方形 - 取决于浏览器),此时最后一个字符是特殊字符,如ë或ö等...

$introtext=html_entity_decode($item->description, ENT_QUOTES, "UTF-8");
$introtext=substr($introtext,0,200);

我怎么能逃避这个?提前谢谢!

4 个答案:

答案 0 :(得分:39)

如果你的字符串有多字节编码(如UTF-8),你应该使用mb_substr来避免这样的问题:

$introtext=mb_substr($introtext,0,200);

答案 1 :(得分:5)

这是因为substr不能用于多字节字符。 substr可能会将一个多字节字符“减半”。您应该使用mb_substr。还要确保您的文件以UTF-8保存。

$introtext = mb_substr($introtext, 0, 200);

答案 2 :(得分:4)

使用mb_substr

答案 3 :(得分:4)

如果有人在上面尝试但仍然没有工作,

尝试在mb_substr中添加Unicode名称,如

$introtext=mb_substr($introtext, 0, 200, 'utf-8');