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

时间:2016-02-05 14:42:53

标签: php html

我通过API调用收到一大块HTML,并尝试将该HTML放入我的模板中进行渲染。但是,它不是渲染,而是打印出来,好像它是一个字符串。

来自API的HTML字符串示例:

Context ctx = ....//e.g., from Service use this. mGoogleApiClient = new GoogleApiClient.Builder(ctx) .addScope(new Scope(Scopes.PROFILE)) .addScope(new Scope(Scopes.EMAIL)) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build();

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

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

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

在视图代码中:

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

最终结果:

<?= $content ?>

如何在我的视图中显示此HTML块?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

试试这个:

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