我有用PHP生成的动态内容,并且我想在data
属性中存储一些各种文本。问题是,我需要逃避可能会损坏我的整个HTML的各种字符。因此,我需要用PHP做一些编码,然后用JavaScript解码该字符串,当我想要使用该数据时,会是什么最好的方法来做到这一点?将数据存储在html元素中
而只是为了澄清,我不希望使用任何输入或类似的东西,我需要这个数据存储在例如a
或div
各种元素等等......
我有用PHP生成的动态内容,并且我想在data
属性中存储一些各种文本。问题是,我需要逃避可能会损坏我的整个HTML的各种字符。因此,我需要用PHP做一些编码,然后用JavaScript解码该字符串,当我想要使用该数据时,会是什么最好的方法来做到这一点?将数据存储在html元素中
而只是为了澄清,我不希望使用任何输入或类似的东西,我需要这个数据存储在例如a
或div
各种元素等等......
如果你想要的是一些数据传递给JavaScript,为什么不write it directly to a variable:
<html>
<head>
<script>
var data = <?php echo json_encode($data); ?>
</script>
<!-- etc. -->
无论如何,如果你想要做你的方式,你可以使用htmlspecialchars
把它在一个HTML属性之前逃脱任意数据:
<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中对此进行解码。
我不会存储大量的数据,只有几个字在那里,这样就会更容易,然后发送一个Ajax请求,所以它不应该伤害。是的,我想逃避也是一个好办法。 – Linas
请张贴一些代码,我的水晶球今天在店里。 – j08691
@ j08691 - 是的大声笑 – PitaJ