当我在php中使用substr()函数时,我会在字符串末尾出现一个带问号的问号(带有问号的正方形 - 取决于浏览器),此时最后一个字符是特殊字符,如ë或ö等...
$introtext=html_entity_decode($item->description, ENT_QUOTES, "UTF-8");
$introtext=substr($introtext,0,200);
我怎么能逃避这个?提前谢谢!
答案 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)
答案 3 :(得分:4)
如果有人在上面尝试但仍然没有工作,
尝试在mb_substr中添加Unicode名称,如
$introtext=mb_substr($introtext, 0, 200, 'utf-8');