这是一个跟进 magento escape string for javascript
我接受@AlanStorm建议使用json_encode来转义字符串文字。
但是我现在对这个解决方案有了新的问题。
当试图转义其中包含/的URL以呈现为JavaScript json_encode的字符串文字时,似乎在/的前面添加了冗余。
这里有任何新建议吗?
解决方案应该采用字符串变量并返回一个字符串,该字符串可以在JavaScript中正确地计算为字符串文字。 (我不在乎它是否包含单引号或双引号 - 虽然我更喜欢单引号。它还必须支持字符串中的换行符。)
由于
答案 0 :(得分:2)
更多信息:怎么来'/');回声 json_encode($ V); ?>结果是 {“a”:“\ /”}?
详情请见http://bugs.php.net/bug.php?id=49366
解决此问题:
str_replace('\\/', '/', $jsonEncoded);
对于您的问题,您可以执行类似
的操作$jsonDecoded = str_replace(array("\\/", "/'s"), array("/", "/\'s"), $jsonEncoded);
希望这有帮助
答案 1 :(得分:2)
当我检查JSON format时,我发现允许对solidi进行转义,因此json_encode
实际上正常工作。
JSON String http://www.json.org/string.gif
satrun77发布的bug链接甚至说“逃避斜杠是不正确的。”
如果你坚持不这样做(在这种情况下)肯定会使用字符串,你可以使用这样的黑客:
echo '["', addslashes($string), '"]';
显然这对于更复杂的结构没有帮助,但幸运的是,你使用的Magento是高度可修改的。将lib/Zend/Json/Encoder.php
复制到app/core/local/Zend/Json/Encoder.php
(形成覆盖)并修复_encodeString
方法。