将数据存储在html元素中

时间:2012-12-19 20:57:57

标签: php javascript encoding

我有动态内容,我用PHP生成,我想在data属性中存储一些不同的文本。问题是我需要逃避可能损坏我的整个HTML的各种角色

所以我需要用php进行某种编码,然后当我想使用那些数据时用javascript解码那个字符串,最好的方法是什么?

为了澄清我不想使用任何输入或类似的东西,我需要将这些数据存储在各种元素中,例如adiv等等......

1 个答案:

答案 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中解码它。