我有动态内容,我用PHP生成,我想在data
属性中存储一些不同的文本。问题是我需要逃避可能损坏我的整个HTML的各种角色
所以我需要用php进行某种编码,然后当我想使用那些数据时用javascript解码那个字符串,最好的方法是什么?
为了澄清我不想使用任何输入或类似的东西,我需要将这些数据存储在各种元素中,例如a
或div
等等......
答案 0 :(得分:1)
如果你想要的只是将一些数据传递给JavaScript,为什么不只是write it directly to a variable:
<html>
<head>
<script>
var data = <?php echo json_encode($data); ?>
</script>
<!-- etc. -->
无论如何,如果您想按照自己的方式进行操作,可以在将任意数据放入HTML属性之前使用htmlspecialchars
来转义任意数据:
<div data="<?php echo htmlspecialchars('"\'!)(@UI#_!)(@JP_!()@J'); ?>">Example</div>
如果您使用JavaScript阅读它,它应该理解HTML编码,因此您不需要做任何特殊的阅读。
如果您的数据更复杂,但不是二元数据,则可以JSON encode,然后使用htmlspecialchars
:
<?php
$data = array();
$data["a"] = 123;
$data["b"] = "example";
$jsonData = json_encode($data);
$escapedJsonData = htmlspecialchars($jsonData);
echo "<div data=\"$escapedJsonData\">example</div>";
?>
然后,您可以使用JSON.parse:
在JavaScript中读取该数据var yourDiv = getDivSomehow();
var data = JSON.parse(yourDiv.getAttribute("data"));
如果您的数据是二进制文件,则可以base64 encode it:
<?php
$data = someImage();
$encodedData = base64_encode($data);
echo "<div data=\"$encodedData\">example</div>";
?>
据推测,有一种方法可以在JavaScript中解码它。