我有用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