我正在使用一个众所周知的" hack" (json编码功能),以防止一些字符搞砸我的HTML,我从API接收一个描述字段,可以内容单引号或双引号(和其他特殊字符)。所以:
<div class="someThing" data-fulldescription=<?=json_encode($textFromApi);?>>
...
</div>
现在我使用jquery读取该数据字段,然后将其打印在div中:
$('#brand-modal-content').html($(this).parents('.someThing').data('fulldescription'));
问题是,引号现在由PHP函数编码,而某些字符被&#34; \ u00e8&#34;或&#34; \ u00f9&#34;,有没有办法使用jquery重新格式化文本?
答案 0 :(得分:2)
您正在以非常错误(甚至是不安全)的方式将内容注入HTML。这样做:
data-fulldescription="<?=htmlspecialchars(json_encode($textFromApi));?>"
这样,无论内部是什么,JSON都将被正确编码并安全注入;然后,您可以像这样解码它:
var decoded = JSON.parse($(this).parents('.someThing').data('fulldescription'));
这些步骤的组合将完美地保留JSON,无论它代表什么(如果您认为它是一个字符串,您可以采用快捷方式,但为什么不始终100%安全?)。然后,您可以使用解码后的值执行任何操作。