[英]How to escape string from PHP for javascript?
讓我們想象一個表單編輯器,它可以編輯可用值。 如果數據包含"
字符(雙引號)它“破壞”HTML 代碼。我的意思是,讓我們檢查代碼:所以我生成 HTML:
onclick="var a = prompt('New value: ', '<?php echo addslashes($rec[$i]); ?>'); if (a.= null)....
結果是
onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a.= null) { v....
這使得 JS 無法工作,從而破壞了代碼。 使用單個 qoute '
它可以正常工作。 mysql real escape
也是如此。 如何轉義任何字符串以使其不會破壞 javascript?
json_encode 看起來不錯,但我一定做錯了什么,它仍然很糟糕:這是 Firefox 如何看到它的屏幕截圖 - 它插入了一個“壞”雙引號:該值只是一個簡單的數字:
http://img402.imageshack.us/img402/5577/aaaahf.gif
我確實使用過:
('Ird be az új nevet:', <?php echo json_encode($rec['NAME']); ?>); if (a) {
應使用htmlspecialchars()
像任何其他HTML屬性一樣轉義onclick
屬性的值。 代碼中的實際Javascript字符串應使用json_encode()
進行編碼。 例如:
<?php
$message = 'Some \' problematic \\ chars " ...';
$jscode = 'alert('.json_encode($message).');';
echo '<a onclick="' . htmlspecialchars($jscode) . '">Click me</a>';
那就是說... onclick(或任何其他事件)屬性是如此2005年。幫自己一個忙,將你的javascript代碼從你的html代碼中分離出來,最好是外部文件,並使用DOM函數(或jQuery,包裝)附加事件它很好)
onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a != null) { v....
您的問題以粗體突出顯示。 你不能引用變量聲明,一旦刪除它就不需要轉義雙引號,因為它在單引號內。 看起來應該是這樣的 -
onclick="newFunc();"
<script>
function newFunc() {
var a = prompt('New value: ', 'aaaa"aaa');
if (a != null) { v....
}
</script>
...onclick="new_func();"...
<script>
function new_func() {
var a = prompt('new value:','<?php code; ?>');
if (a) { <!--javascript code--> } else { <!--javascript code--> }
}
</script>
我真的只是重寫@Marshall House在這里說的話,但是:
在HTML中,雙引號(“)將始終結束一個屬性,無論反斜杠如何 - 所以它看到: onclick="var a = prompt('New value: ', 'aaaa\\"
。@ Marshall提供的解決方案是將您的代碼分離成一個函數。這樣您就可以將轉義的PHP打印到它中而不會出現問題。
例如:
<script>
// This is a function, wrapping your code to be called onclick.
function doOnClickStuff() {
// You should no longer need to escape your string. E.g.:
//var a = prompt('new value:','<?php echo $rec[$i]; ?>');
// Although the following could be safer
var a = prompt('new value:',<?php json_encode($rec[$i]); ?>);
if (a) { <!--javascript code--> }
else { <!--javascript code--> }
}
</script>
<someelement onclick="doOnClickStuff();"> <!-- this calls the javascript function doOnClickStuff, defined above -->
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.