php html_entity_decode如何使用

时间:2012-04-26 06:32:24

标签: php html-encode

我正在尝试将HTML实体从源字符串转换为其等效的文字字符。

例如:

   <?php

    $string = "Hello &#8211; World";
    $converted = html_entity_decode($string);

    ?>

虽然这正确地在屏幕上转换实体,但当我查看HTML代码时,它仍然显示显式实体。我需要更改它,以便它实际上转换实体,因为我没有在HTML页面中使用该字符串。

关于我做错的任何想法?

仅供参考我将转换后的字符串发送到Apple的推送通知服务:

 $payload['aps'] = array('alert' => $converted, 'badge' => 1, 'sound' => 'default');
    $payload = json_encode($payload);

2 个答案:

答案 0 :(得分:0)

您从哪里获得结果,例如权利在哪里仍然显示?转换后你error_log了吗?

也许您需要将其他两个参数添加到html_entity_decode,因为json_encode要求字符串为UTF-8编码。试试这个:

$converted=html_entity_decode($string,ENT_COMPAT,"UTF-8");

编辑是的,在我的phpsh中查看它,你肯定需要添加两个参数(特别是UTF-8)。

答案 1 :(得分:0)

要将实体解码为角色,html_entity_decode需要知道你喜欢角色的编码。“ü”可以用Latin-1,UTF-8,UTF-16和许多其他编码。默认值为Latin-1。 &#8211;( - ,EN DASH)无法用Latin-1表示。因此它保持不变。告诉html_entity_decode将其解码为可以表示该字符的编码,如UTF-8:

html_entity_decode($str, ENT_COMPAT, 'UTF-8')