首先 - 我是一个php新手。我正在尝试使用mb_substr来限制wordpress主题上的标题长度,但是当标题中有某些符号时它会返回更少的字符,例如“'”(撇号)或“ - ”(短划线)。
这是我正在使用的代码,将字符总数限制为60(忽略非省略号):
<?php
$short_title = the_title('','',false);
$short_title_2 = mb_substr($short_title,0,60, 'utf-8');?>
<h3>
<a href="<?php the_permalink(); ?>">
<?php echo $short_title_2; if($short_title_2!=$short_title) { echo "..."; }; ?>
</a>
</h3>
所以基本上我不想把这个标题截断为60个字符,但是当我有任何形式的标点符号或其他特殊字符时,它会将它们视为一个单独的6个字符(必须计算它们的unicode值或什么?)这意味着它实际上只会返回54个字符。
这是带有短划线字符的示例标题:
Competition - Win Tees from Listen To Your Eyes Clothing Now Ended
代码应返回:
<h3>Competition - Win Tees from Listen To Your Eyes Clothing Now…</h3>
实际返回的内容:
<h3>Competition – Win Tees from Listen To Your Eyes Clothi…</h3>
数据库字符集设置为utf8_general_ci(包括标题表)
有什么方法可以克服这个问题吗?
答案 0 :(得分:2)
将html实体解码回正常
$short_title_2 = mb_substr(html_entity_decode($short_title, ENT_QUOTES),0,60, 'utf-8');