在JavaScript和PHP中转义引用

时间:2011-11-03 20:08:24

标签: php javascript string escaping

<?php
    /* ... Getting record from database */

    $comment = $record["comment"];
    /* There might be quotes or double quotes, we don't know */

    echo "<input type='button' onclick=\"doSomething('$comment')\" />";
?>

<script>
    function doSomething(comment) {
        alert(comment);

        /* Something else */
    }
</script>

当$ comment字符串包含单引号时,我在javascript中收到“未捕获的SyntaxError:Unexpected token ILLEGAL ”错误。

  • 我在引号之前添加斜杠,但它不起作用 - $comment = str_replace("'","\'",$comment);

如何在此示例中转义引号和双引号?

3 个答案:

答案 0 :(得分:9)

使用json_encode(),这可以保证您的输出在语法上是有效的JavaScript代码:

<input type="button" onclick="doSomething(<?php echo json_encode($comment) ?>">

答案 1 :(得分:1)

使用PHP函数addslashes()

答案 2 :(得分:0)

你可以在Javascript中尝试这样的事情:

function addslashes(str){
    str=str.replace(//g,'\');
    str=str.replace(/'/g,''');
    str=str.replace(/"/g,'"');
    str=str.replace(//g,'');
    return str;
}
function stripslashes(str){
    str=str.replace(/'/g,''');
    str=str.replace(/"/g,'"');
    str=str.replace(//g,'');
    str=str.replace(/\/g,'');
    return str;
}

希望这有帮助:)