我们的网站是中文的,主页的一部分显示了其他页面标题的列表,其最大长度被称为'26'(我假设这是使用英文字符计数,如果汉字是用英文写的?)。我们用于此的路线是:
<?php echo anchor('projects/'.$rs->url_project_title.'/'.$rs->project_id,substr(ucfirst($rs->project_title),0,26),'style="text-decoration:none;"'); ?>
但是,如果标题确实很长,那么代码会截断它,但是最后两个汉字总是显示为 ,因为我猜它是使用英文版的单词并分割汉字(不知何故)。也许我在想这个!?
例如......
原件:
在国内做一个尊重艺术,能够为青年导演提供平
截断版本:
在国内做一个尊重��
您是否可以建议修改以启用所需数量的字符而不会产生 ??
答案 0 :(得分:6)
而不是substr
使用mbstring
函数:
echo anchor(
'projects/' . $rs->url_project_title . '/' . $rs->project_id,
mb_substr(ucfirst($rs->project_title), 0, 26),
'style="text-decoration:none;"'
);
如果你没有成功,那么PHP可能没有检测到字符串编码,因此请为mb_substr()
提供正确的编码:
// PHP uses internal encoding mb_internal_encoding()
echo mb_substr($string, 0, 26);
// you specify the encoding - in the case you know in which encoding the input comes
echo mb_substr($string, 0, 26, 'UTF-8');
// PHP tries to detect the encoding
echo mb_substr($string, 0, 26, mb_detect_encoding($string));
有关详细信息,请参阅mb_detect_encoding()
。
希望这有帮助。