使用引号的错误

时间:2014-07-15 15:55:05

标签: javascript php html

我有以下代码:

<head>
    <title>Quote Marks</title>
</head>
<body>

<?php
    $variable1 = "'QUOTE' \" 'MARKS'";
?>

    <button onclick="text( '<?php  echo addslashes($variable1); ?>' );">click me</button>

    <script type="text/javascript">
        function text(texto){
            if( confirm( texto ) ) {
                alert("thanks!");
            }
        }
    </script>

</body>

它不起作用!我的引号有问题...当我点击按钮时,我希望对话框显示"$variable1"中包含所有引号的文字......

1 个答案:

答案 0 :(得分:2)

您需要制作数据:

  • 安全的JavaScript字符串 - 使用json_encode代替'addslashes'
  • 安全的HTML属性值 - 使用htmlspecialchars

因此:

<button 
    onclick="text(<?php echo htmlspecialchars(json_encode($variable1)); ?>);">

根据经验,在HTML引号中处理PHP引号内的PHP引用比较值得。通常可以通过将JS保存在<script>元素而不是内部属性值中来消除至少一个级别的嵌套。

<script>
    function myFunction() {
        text(<?php echo json_encode($variable1); ?>);
    }
    document.querySelector('button').addEventListener('click', myFunction);
</script>