我有一个大的多维数组,有多个字符串值包含带有html标记和属性的字符串。
但是当我使用json_encode
时,我得到的输出会删除一些标记。
这是我在一个单独的文件上尝试过的例子,以确定这是否真的是json编码的问题,结果证明我是对的。
<?php
$var = array(
"type" => "<p style=\"text-align: center;\">sfds</p>"
);
$encoded = json_encode($var);
echo '<pre>';
print_r($encoded);
如何处理这种情况?
这是我从例子中得到的结果。
{"type":"
sfds<\/p>"}
这是我从多维数组得到的结果。
{"data":[{"type":"columns","data":{"columns":[{"width":6,"blocks":[]},{"width":6,"blocks":[]}],"preset":"columns-6-6"}},{"type":"columns","data":{"columns":[{"width":6,"blocks":[{"type":"heading","data":{"text":"
I am the Heading<\/p>","mce_0":"
I am the Heading<\/p>"}},{"type":"heading","data":{"text":"
sfds<\/p>","mce_1":"
sfds<\/p>"}}]},{"width":6,"blocks":[{"type":"text","data":{"text":"
\n
Im Text<\/div>\n<\/div>","mce_2":"
\n
Im Text<\/div>\n<\/div>"}}]}],"preset":"columns-6-6"}},{"type":"text","data":{"text":"
\n
Im just a text<\/div>\n<\/div>","mce_3":"
\n
Im just a text<\/div>\n<\/div>"}}]}
= - = - = - = - = - = -
更新:生成的HTML源代码我正在尝试编码的数组变量的var_dump代码。
<pre> after set2_decode:<br>array(1) {
["data"]=>
array(3) {
[0]=>
array(2) {
["type"]=>
string(7) "columns"
["data"]=>
array(2) {
["columns"]=>
array(2) {
[0]=>
array(2) {
["width"]=>
int(6)
["blocks"]=>
array(0) {
}
}
[1]=>
array(2) {
["width"]=>
int(6)
["blocks"]=>
array(0) {
}
}
}
["preset"]=>
string(11) "columns-6-6"
}
}
[1]=>
array(2) {
["type"]=>
string(7) "columns"
["data"]=>
array(2) {
["columns"]=>
array(2) {
[0]=>
array(2) {
["width"]=>
int(6)
["blocks"]=>
array(2) {
[0]=>
array(2) {
["type"]=>
string(7) "heading"
["data"]=>
array(2) {
["text"]=>
string(23) "<p>I am the Heading</p>"
["mce_0"]=>
string(23) "<p>I am the Heading</p>"
}
}
[1]=>
array(2) {
["type"]=>
string(7) "heading"
["data"]=>
array(2) {
["text"]=>
string(39) "<p style="text-align: center;">sfds</p>"
["mce_1"]=>
string(39) "<p style="text-align: center;">sfds</p>"
}
}
}
}
[1]=>
array(2) {
["width"]=>
int(6)
["blocks"]=>
array(1) {
[0]=>
array(2) {
["type"]=>
string(4) "text"
["data"]=>
array(2) {
["text"]=>
string(59) "<div>
<div style="text-align: center;">Im Text</div>
</div>"
["mce_2"]=>
string(59) "<div>
<div style="text-align: center;">Im Text</div>
</div>"
}
}
}
}
}
["preset"]=>
string(11) "columns-6-6"
}
}
[2]=>
array(2) {
["type"]=>
string(4) "text"
["data"]=>
array(2) {
["text"]=>
string(65) "<div>
<div style="text-align: right;">Im just a text</div>
</div>"
["mce_3"]=>
string(65) "<div>
<div style="text-align: right;">Im just a text</div>
</div>"
}
}
}
}
</pre>
答案 0 :(得分:1)
您的浏览器会隐藏所有标签。 使用htmlentities()查看所有代码
print_r(htmlentities($encoded));
答案 1 :(得分:1)
我认为很有帮助。请使用print_r然后转义你的HTML。
echo htmlentities (print_r (json_encode($var), true));
我希望这有帮助!
答案 2 :(得分:0)
将JavaScript放入JSON响应中并不是最佳做法,最佳做法是在前端精确构建html并只调用已构建的html中的数据。但是请注意,你不能在json响应中使用纯html。它通常是逃脱的。所以你必须确保你的html正确构建。 这是一篇很好的文章来帮助你。
https://www.thorntech.com/2012/07/4-things-you-must-do-when-putting-html-in-json/