2012-12-19 48 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

相關問題