1

我正在尝试将 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);
4

2 回答 2

0

你从哪里得到结果,例如,实体仍然在哪里显示?你error_log是转换后的吗?

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

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

编辑是的,在我的 phpsh 中检查过,你肯定需要添加两个参数(尤其是 UTF-8)。

于 2012-04-26T06:36:49.277 回答
0

要将实体解码为字符,html_entity_decode需要知道您希望字符使用哪种编码。“ü”可以用 Latin-1、UTF-8、UTF-16 和许多其他编码表示。默认值为 Latin-1。&#8211;(–, EN DASH) 不能用 Latin-1 表示。因此它保持不变。Tellhtml_entity_decode将其解码为可以表示该字符的编码,例如 UTF-8:

html_entity_decode($str, ENT_COMPAT, 'UTF-8')
于 2012-04-26T06:40:02.627 回答