data
PHPで生成した動的コンテンツがあり、さまざまなテキストを属性に格納したいと思います。問題は、HTML全体に損傷を与える可能性のあるさまざまな文字をエスケープする必要があることです。
したがって、phpで何らかのエンコードを行い、そのデータを使用するときにjavascriptでその文字列をデコードする必要があります。これを行うための最良の方法は何でしょうか?
そして、明確にするために、入力などを使用したくないので、このデータをさまざまな要素に保存する必要がありa
ますdiv
。
data
PHPで生成した動的コンテンツがあり、さまざまなテキストを属性に格納したいと思います。問題は、HTML全体に損傷を与える可能性のあるさまざまな文字をエスケープする必要があることです。
したがって、phpで何らかのエンコードを行い、そのデータを使用するときにjavascriptでその文字列をデコードする必要があります。これを行うための最良の方法は何でしょうか?
そして、明確にするために、入力などを使用したくないので、このデータをさまざまな要素に保存する必要がありa
ますdiv
。
データをJavaScriptに渡すだけの場合は、変数に直接書き込むだけではどうでしょうか。
<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エンコードしてから、次を使用でき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でエンコードできます。
<?php
$data = someImage();
$encodedData = base64_encode($data);
echo "<div data=\"$encodedData\">example</div>";
?>
おそらく、JavaScriptでこれをデコードする方法がいくつかあります。