使用PHP进行json_编码跳过html标记

使用PHP进行json_编码跳过html标记,php,html,json,tags,Php,Html,Json,Tags,我想在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_UNESCAPE

我想在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));
$test=array('name'=>'Header Images','template'=>'{{{{each Images}}}{{Images\u url}}}{{{/each}}');
print_r(json_encode($test,json_UNESCAPED_UNICODE));
结果:

{"name":"Header Images","template":"{{#each images}}{{image_url}}<\/span>{{\/each}}"}
{“name”:“Header-Images”,“template”:“{{{each-Images}}{{Images\u-url}}{{\/each}}”

此处跳过标记。我还使用了json编码,但没有使用json UNESCAPED UNICODE,但没有任何更改。

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


如果您将代码更改为
print\r(htmlspecialchars(json\u encode($test,json\u UNESCAPED\u UNICODE)),您将看到标记确实包含在JSON中(或者您可以在浏览器中查看源代码并查看标记是否存在)。

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

$test = array('name' => 'Header Images','template' => '{{#each images}}<span>{{image_url}}</span>{{/each}}');
$test = json_encode($test);
print_r(htmlentities($test));
$test=array('name'=>'Header Images','template'=>'{{{{each Images}}}{{Images\u url}}}{{{/each}}');
$test=json_encode($test);
打印(htmlentities($test));
结果:

{"name":"Header Images","template":"{{#each images}}<span>{{image_url}}<\/span>{{\/each}}"}
{“name”:“Header-Images”,“template”:“{{{each-Images}}{{Images\u-url}}{{\/each}}”

谢谢您的回复。我使用了“
”和“
”来显示html括号。我希望它能正常工作。下面是更改后的代码:$test=array('name'=>'Header Images','template'=>'{{{each Images}}}
span
{image\u url}}
{/each}});