转义存储在html dom中的大型json数据中的斜杠

时间:2016-08-12 11:35:54

标签: php html arrays json

我在php中有一个大型数组,包含许多子数组。 (大约100个子数组,每个子数组至少包含3级嵌套数组,其中一些文本中包含'"标记。我想json_encode()这个数组,并将其存储为HTML data元素。

这是我用来在html中存储数据的代码:

echo "<div id='map' data-nodes='".json_encode($nodes)."'></div>";

我尝试过很多不同的事情,似乎无法解决这个问题。每次我尝试将这个大的json字符串添加到它时,我的HTML都会中断。问题必须以某种方式使用斜杠,但我无法弄清楚如何解决它。

到目前为止我所做的尝试:
1.将htmlspecialchars()和/或addslashes()分别添加到文本子阵列中 2.添加&#39; addslashes()&#39;在json编码整个阵列之后 3.将回显中的引号从双斜线更改为单斜线,反之亦然 4.所有这四种的混合。

当我渲染页面时,可以清楚地看到data-nodes HTML数据元素以双引号结束,并且后面仍有文本。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

在html中存储一个大的json本身似乎不是一个好主意:) 如果你想通过javascript访问它,你可以在<script>块中声明一个变量:

<div id='map'></div>
<script type="text/javascript">
    var mapData = <?php echo json_encode($nodes); ?>;
</script>

此外,通过这种方式,您获得significant performance improvement

P.S。是的,你得到一个全局变量