什么是为Javascript函数转义HTML的正确方法?

时间:2014-08-20 15:55:32

标签: javascript php syntax-error htmlspecialchars

我收到 未捕获的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(&quot;<?php echo htmlspecialchars($str); ?>&quot;)">Test</div>

2 个答案:

答案 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) ?>;