JavaScript中的PHP变量(带引号)

时间:2014-08-16 21:52:43

标签: javascript php

我试图在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>

3 个答案:

答案 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本身中提供引号,因为这些引用来自编码结果。

优点:

  • 正确。结果始终表示有效的JavaScript文字(或对象/数组)表达式。
  • 简单。在处理字符串值时,无需担心JavaScript中的引号。
  • 一致。相同的方法适用于许多值 - 例如数组(索引,键控和复杂),数字,布尔值,NULL - 并保留更多类型信息。
  • 安全。使用json_encode prevents script-injection和默认选项。

答案 1 :(得分:-1)

根据您想要输出“str”的位置(在警报或html页面上),我会采用不同的命令。

<script type="text/javascript">

var str = "<?php echo addslashes($a1); ?>";
alert(str);

</script>

如果您想将其添加为新的DOM元素,我希望htmlspecialcharshtmlentities

作为替代方案:

var str = <?php echo json_encode($a1, JSON_UNESCAPED_UNICODE); ?>;

答案 2 :(得分:-2)

使用htmlspecialchars转换$ a1

$a1 = htmlspecialchars("Here is the \"best\" apple around");