簡體   English   中英

magento JavaScript第2部分的轉義字符串

[英]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字串
(來源: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM