考虑下面的代码从php向js发送一个json字符串,
<?php
$str = "<!--<script>"; // This is from user input
?>
<script>
var json_str = <?= json_encode($str) ?>;
</script>
字符串会破坏HTML,解决这个问题的方法是通过老式的注释hack,例如
<script>
<!--
var json_str = <?= json_encode($str) ?>;
//-->
</script>
有其他选择吗?
您可以使用标志JSON_HEX_TAG
,这样<
和>
将分别被编码为'u003C
和'u003E
。
json_encode($str, JSON_HEX_TAG)