PHP中的html_entity_decode问题?

moo*_*ots 17 php html-encode html-entities

我试图将HTML实体从源字符串转换为它们的文字字符等价物.

例如:

<?php

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

?>
Run Code Online (Sandbox Code Playgroud)

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

关于我做错了什么的任何想法?

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

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

Bol*_*ock 35

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

$converted = html_entity_decode($string, ENT_COMPAT, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

  • 当我查看那个实体的源代码时,我仍然得到该实体......? (2认同)

mr.*_*Shu 5

尝试使用字符集

<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;
?>
Run Code Online (Sandbox Code Playgroud)

这应该可以工作并且也应该在源中进行转换