繁体   English   中英

JavaScript中的PHP变量(带引号)

[英]PHP variable (with quotes) in JavaScript

我正在尝试访问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>

使用json_encode可以简化和保持一致性 请参阅ideone示例

<?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 可以使用默认选项防止脚本注入

根据您要输出“ 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); ?>;

使用htmlspecialchars转换$ a1

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM