2012-12-19 110 views
-1

我有用PHP生成的动态内容,并且我想在data属性中存储一些各种文本。问题是,我需要逃避可能会损坏我的整个HTML的各种字符。因此,我需要用PHP做一些编码,然后用JavaScript解码该字符串,当我想要使用该数据时,会是什么最好的方法来做到这一点?将数据存储在html元素中

而只是为了澄清,我不希望使用任何输入或类似的东西,我需要这个数据存储在例如adiv各种元素等等......

+2

请张贴一些代码,我的水晶球今天在店里。 – j08691

+0

@ j08691 - 是的大声笑 – PitaJ

回答

1

如果你想要的是一些数据传递给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中对此进行解码。

+0

我不会存储大量的数据,只有几个字在那里,这样就会更容易,然后发送一个Ajax请求,所以它不应该伤害。是的,我想逃避也是一个好办法。 – Linas

相关问题