我正在尝试将HTML实体从源字符串转换为其等效的文字字符。
例如:
<?php
$string = "Hello – World";
$converted = html_entity_decode($string);
?>
虽然这正确地在屏幕上转换实体,但当我查看HTML代码时,它仍然显示显式实体。我需要更改它,以便它实际上转换实体,因为我没有在HTML页面中使用该字符串。
关于我做错的任何想法?
仅供参考我将转换后的字符串发送到Apple的推送通知服务:
$payload['aps'] = array('alert' => $converted, 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
答案 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。 –
( - ,EN DASH)无法用Latin-1表示。因此它保持不变。告诉html_entity_decode
将其解码为可以表示该字符的编码,如UTF-8:
html_entity_decode($str, ENT_COMPAT, 'UTF-8')