我知道mb_用于处理utf8字符,但它仍然无法解决我的问题。
所以我有这个字符串:
óóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó
mb_substr ($oooo, 0,17, 'UTF-8');
óóóóóóóóóóóóóóóóó&安培; OAC
所以最后一个角色会受到伤害。
答案 0 :(得分:3)
你的字符串不实际
$str = 'óóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó';
你的字符串实际上是:
$str = 'óóóóóóóó...';
当在浏览器中查看时,浏览器当然会呈现“ó”,但这对PHP毫无兴趣。
最好的解决方案是将您的内容转换为实际的UTF-8编码字符“óóóóóóóóóóóóó”,然后按原样使用您的代码。要使其在当前字符串上工作,您需要首先解码HTML实体:
$str = 'óóóóóóóó...';
$str = html_entity_decode($str, ENT_COMPAT, 'UTF-8');
echo mb_substr($str, 0, 17, 'UTF-8');
您当然需要处理输出编码,因为您现在正在输出浏览器需要了解的实际UTF-8。请参阅UTF-8 all the way through。