substr()奇怪的输出。是什么导致了这个?

时间:2011-11-04 03:33:56

标签: php html-entities

所以我使用substr来限制我展示的新闻文章的数量。这是代码:

substr(strip_tags($news['content']),0,$content_length) . '...';

问题只发生在蓝色的月亮......当它试图在撇号附近切断时。我得到以下输出Hoye&#...在这种情况下,$news['content']"Hoye's Pharmacy will be closed....."。在这种情况下,$content_length值恰好是8.有人建议尝试mb_substr,但这并没有解决问题。

1 个答案:

答案 0 :(得分:3)

看起来内容包含编码的HTML字符实体,并且您的子字符串碰巧在其中一个字符串的中间切断字符串。

e.g。

$string = "Hello & Goodbye";
$broken =  substr($string, 0,7); // Hello &a

如果你在浏览器中查看完整的字符串,它会将编码的实体转换为它的“显示”版本,所以你会看到真正的角色,但是一旦你用substr砍掉它一半,你就会得到而是部分& #xxx部分,因为它无法翻译。