[英]magento escape string for JavaScript part 2
這是針對Java的magento轉義字符串的后續活動
我在這里接受@AlanStorm建議使用json_encode來轉義字符串文字。
但是我現在對這個解決方案有一個新的問題。
當嘗試轉義包含/的URL並將其呈現為JavaScript的字符串文字時,json_encode似乎在/的前面添加了多余的\\。
這里有什么新建議嗎?
解決方案應采用一個字符串變量,並返回一個將在JavaScript中正確評估為字符串文字的字符串。 (我不在乎它是用單引號還是雙引號引起來的,盡管我更喜歡單引號。而且它還必須在字符串中支持換行符。)
謝謝
更多信息:'/'); echo json_encode($ v); ?>產生{“ a”:“ \\ /”}嗎?
可以在這里找到詳細信息http://bugs.php.net/bug.php?id=49366
解決此問題:
str_replace('\\/', '/', $jsonEncoded);
對於您的問題,您可以做類似的事情
$jsonDecoded = str_replace(array("\\/", "/'s"), array("/", "/\'s"), $jsonEncoded);
希望這可以幫助
當我檢查JSON格式時,我看到允許對solidi進行轉義,因此json_encode
實際上可以正常工作。
(來源: json.org )
satrun77發布的錯誤鏈接甚至說“逃脫斜線並非不正確”。
如果您堅決不使用and並且(在這種情況下)一定要使用字符串,則可以使用如下方法:
echo '["', addslashes($string), '"]';
顯然,這對於更復雜的結構沒有幫助,但是幸運的是,您正在使用可高度修改的Magento。 將lib/Zend/Json/Encoder.php
復制到app/core/local/Zend/Json/Encoder.php
(形成覆蓋)並修復它的_encodeString
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.