我通过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'] . '"');