来自 API 的 HTML 字符串未转换为 HTML 呈现的实体


HTML string from API not being converted to HTML rendered entities

我通过API调用接收了一大块HTML,并试图将该HTML放入我的模板中以供其呈现。但是,它不是渲染,而是像字符串一样打印出来。

来自 API 的 HTML 字符串示例:

'u0026lt;p'u0026gt;'u0026lt;strong'u0026gt;Hello World'u0026lt;/strong'u0026gt;'u0026lt;/p'u0026gt;

然后在控制器中我将字符串转换为 HTML 实体

$content = htmlspecialchars_decode($response['content']);

我遇到的问题是,在我看来,HTML 是打印的(标签和所有),而不是呈现为 HTML:

在视图代码中:

<?= $content ?>

最终结果:

<p><strong>Hello World</strong></p>

如何让此 HTML 块在我的视图中呈现?

您的数据看起来像是双重编码的。尝试

$content = htmlspecialchars_decode(htmlspecialchars_decode($response['content']));

从字符串的外观来看,您不需要 htmlspecialchars_decode() ,因为您没有直接包含 HTML 特殊字符。

我怀疑您正在以 JSON 格式获取数据。JSON 编码的值有时可以将特殊字符转换为 Unicode 常量(例如,PHP json_encode() 函数在与 JSON_HEX_* 选项一起使用时会执行此操作)。

试试这个:

$content = json_decode('"' . $response['content'] . '"');