php,mb_substr杀死unicode字符

时间:2014-01-22 15:13:04

标签: php utf-8

我知道mb_用于处理utf8字符,但它仍然无法解决我的问题。

所以我有这个字符串:

  

óóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó

mb_substr ($oooo, 0,17, 'UTF-8');
  

óóóóóóóóóóóóóóóóó&安培; OAC

所以最后一个角色会受到伤害。

1 个答案:

答案 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