[使用PHP的json_encode跳过html标签

问题描述 投票:-1回答:2

我想在Json中转换php字符串或数组,所以我使用了json_encode。但由于我的字符串是html内容,因此json转换会跳过html标签。

请检查下面的代码

$test = array('name' => 'Header Images','template' => '{{#each images}}<span>{{image_url}}</span>{{/each}}');
print_r(json_encode($test,JSON_UNESCAPED_UNICODE));

结果:

{"name":"Header Images","template":"{{#each images}}{{image_url}}<\/span>{{\/each}}"}

这里的标签被跳过。我也使用了不带JSON_UNESCAPED_UNICODE的json_encode,但没有更改。

php html json tags
2个回答
1
投票

HTML标记是JSON的有效内容。这里发生的是您的浏览器将标签解释为标签(因为您只是将JSON输出到浏览器中)。

如果将代码更改为print_r(htmlspecialchars(json_encode($test,JSON_UNESCAPED_UNICODE)));,您会看到JSON中确实包含标签(或者,您也可以在浏览器中查看源代码并看到其中的标签)。


0
投票

您的浏览器将隐藏所有标签。使用htmlentities()查看所有标签。

$test = array('name' => 'Header Images','template' => '{{#each images}}<span>{{image_url}}</span>{{/each}}');
$test = json_encode($test);
print_r(htmlentities($test));

结果:

{"name":"Header Images","template":"{{#each images}}<span>{{image_url}}<\/span>{{\/each}}"}
© www.soinside.com 2019 - 2024. All rights reserved.