[英]Escaping Javascript in PHP
我正在尋找在PHP中轉義一些Javascript文本的最佳方法,而json_encode
是完成此工作的錯誤工具。
問題來自此行:
echo " onclick=\"SwitchDiv('" . $option . "')\"";
如果$option
有撇號,則這是客戶端失敗的多汁球。
但是直接執行json_encode
(在其他情況下效果很好)並沒有幫助:
echo " onclick=\\"SwitchDiv(" . json_encode($option) . ")\\"";
這將創建一個onclick="SwitchDiv("athlete's foot")"
的輸出字符串,導致onclick
值過早終止。
(如果將onclick
值括在單引號中,也會發生這種情況。)
有沒有解決這個問題的優雅方法? 我是否應該僅通過正則表達式將json_encode
輸出漏斗,從而避免使用單引號?
json_encode
是適合此工作的工具。 您的問題是由於您還將該Javascript包含在HTML屬性中而引起的 ,因此還需要對其進行htmlspecialchars
編碼。
echo " onclick=\"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")\"";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.