PHP中的html_entity_decode问题?

时间:2011-01-09 10:04:13

标签: php html-entities 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 :(得分:32)

&#8211;映射到UTF-8字符(em破折号),因此您需要指定UTF-8作为字符编码:

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

答案 1 :(得分:4)

尝试使用charset

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<?php
$string = "Hello &#8211; World";
$converted = html_entity_decode($string , ENT_COMPAT, 'UTF-8');
echo $converted;
?>

这应该有效 它也应该在源

中转换