我收到 未捕获的SyntaxError:意外的标识符 由于Java脚本冲突语法或单引号和双引号。
在源文件中, $ str 会作为特殊字符进行转义,但不确定为什么Javascript会出现错误。
对于Javascript函数使用目的,在字符串中用单引号或双引号来转义它的正确/正确方法是什么?
以下是我的代码:
<?php
$str = 'I\'m John Doe < lol > "19" ! ?';
?>
<div onclick="alert('<?php echo htmlspecialchars($str); ?>')">Test</div>
<div onclick="alert("<?php echo htmlspecialchars($str); ?>")">Test</div>
答案 0 :(得分:2)
这里要注意的重要一点是,你不仅仅拥有JavaScript。您在HTML属性中有JavaScript,因此您必须为JS 然后转义HTML。
json_encode
将为JS逃脱。它还会在字符串周围添加引号,所以你自己不需要这样做。
htmlspecialchars
将针对HTML进行转义。
onclick="alert(<?php echo htmlspecialchars( json_encode( $str ) ); ?>"
答案 1 :(得分:0)
每当您在JavaScript上下文中使用字符串时,请使用JSON编码。 JSON与JavaScript解析器兼容,并且所有需要的转义都将为您完成。
var str = <?php json_encode($str) ?>;