我试图在JavaScript中访问PHP变量。我已经在PHP变量中转义了引号,而且JavaScript不会接收它。在不更改$ a1 php变量的情况下,如何在JavaScript中访问它?
<?php
$a1 = "Here is the \"best\" apple around"; //<-- doesn't work in javascript...
$a2 = "Here is the best apple around"; //<--works fine in javascript...
?>
JavaScript的:
<script type="text/javascript">
var str = "<?php echo $a1; ?>";
alert(str);
</script>
答案 0 :(得分:4)
使用json_encode
获取简单性和一致性。请参阅the ideone example。
<?php
$a1 = "Here is the \"best\" apple around";
?>
var str = <?php echo json_encode($a1); ?>;
结果:
var str = "Here is the \"best\" apple around";
不要在JavaScript本身中提供引号,因为这些引用来自编码结果。
优点:
json_encode
prevents script-injection和默认选项。答案 1 :(得分:-1)
根据您想要输出“str”的位置(在警报或html页面上),我会采用不同的命令。
<script type="text/javascript">
var str = "<?php echo addslashes($a1); ?>";
alert(str);
</script>
如果您想将其添加为新的DOM元素,我希望htmlspecialchars
或htmlentities
。
作为替代方案:
var str = <?php echo json_encode($a1, JSON_UNESCAPED_UNICODE); ?>;
答案 2 :(得分:-2)
使用htmlspecialchars转换$ a1
$a1 = htmlspecialchars("Here is the \"best\" apple around");