我试图摆脱使用PHP的htmlentities,这就是我停止的地方:
<?php
echo '<img ... onclick="MP.view(\''.$i->name.'\') />';
?>
但后来我想,不是替换和检查特殊字符,我只是JSON整个对象。
<?php
echo '<img ... onclick="MP.view('.json_encode($i).') />';
?>
这提供了一个非常不希望的结果,产生了大量的双引号。 那我该怎么做呢?我应该为每个图像分配一个数字唯一ID并只传递id,然后从JS数组中查找其余的数据吗?
答案 0 :(得分:6)
在这种情况下,正确的做法是:
htmlspecialchars(json_encode($var), ENT_QUOTES, "UTF-8")
htmlspecialchars
将任何双引号转换为正确的HTML转义,使得结果字符串适合大多数属性。 ENT_QUOTES
参数也会处理单引号;但你可能在你的例子中不需要那样。
答案 1 :(得分:0)
传递这样的数据需要花费更多的时间(以及更少的字节):
echo '<script>var myObj = '.json_encode($i).'</script>';
然后,您的代码可能看起来更像这样:
echo '<img ... onclick="MP.view(myObj)" />';