これを行う最善の方法は、 を使用して値をエンコードすることですjson_encode
。以下に簡単な例を示します。
<?php
$name = "Jason's Bakery";
?>
<script>
var name = <?php echo json_encode($name); ?>;
DoSomethingWithName(name);
</script>
これは、整数、文字列、およびその他の値に使用できます。必要に応じて引用符が追加されるため、「一度に値全体」を組み立ててエンコードする必要があることに注意してください。URLを使用する例では、PHPurlencode()
関数を使用して最初にエンコードし、それを渡してjson_encode
javascript値に変換する必要があります。のように HTML 属性の中に配置する場合は、onclick
さらにそれを通過させてからhtmlspecialchars(..., ENT_QUOTES)
、二重引用符で囲む必要があります。
http://php.net/manual/en/function.json-encode.php
たとえば、PHP で URL を作成し、それを JavaScript で使用する必要があります...
<?php
$name = "Jason's \"Awesome\" Bakery";
$url = "http://site.com/page.php?name=" . urlencode($name);
?>
<script>
var name = <?php echo json_encode($name); ?>;
DoSomethingWithName(name);
</script>
<input type="button" onclick="<?php echo htmlspecialchars('window.location = ' . json_encode($url) . ';', ENT_QUOTES); ?>" value="Click Me" />
次のような結果になります。
<script>
var name = "Jason's \"Awesome\" Bakery";
DoSomethingWithName(name);
</script>
<input type="button" onclick="window.location = "http:\/\/site.com\/page.php?name=Jason%27s+%22Awesome%22+Bakery";" value="Click Me" />
言うまでもなく、これらなしではやりたくありません。
http://php.net/manual/en/function.json-encode.php
http://www.php.net/manual/en/function.urlencode.php
http://www.php.net/manual/ ja/function.htmlspecialchars.php