2014-07-15 41 views
0

我有下面的代碼:使用錯誤的引號

<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"所有引號的文本對話框......

+0

你不需要加引號的「

+1

@johnSmith - 你做,如果你用'addslashes'逃逸。 – Quentin

回答

2

你需要使數據:

  • 一個安全的JavaScript字符串 - 使用json_encode而不是',addslashes'
  • 一個安全的HTML屬性值 - 使用htmlspecialchars

這樣:

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

作爲一個經驗法則,處理PHP引號在裏面的JavaScript報價HTML引號內是比較麻煩則是值得的。您通常可以通過將JS保存在<script>元素中而不是內部屬性值中來擺脫至少一層嵌套。

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

ow ...謝謝,它的工作原理! – gui5711

+0

嘿,我可以在<?php echo htmlspecialchars(json_encode($ variable1))之前寫一些東西嗎? ?>? – gui5711