最好的方法是使用 对值进行编码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/ zh/function.htmlspecialchars.php