JavaScript第2部分的magento转义字符串

时间:2011-01-30 13:43:11

标签: php magento escaping json

这是一个跟进 magento escape string for javascript

我接受@AlanStorm建议使用json_encode来转义字符串文字。

但是我现在对这个解决方案有了新的问题。

当试图转义其中包含/的URL以呈现为JavaScript json_encode的字符串文字时,似乎在/的前面添加了冗余。

这里有任何新建议吗?

解决方案应该采用字符串变量并返回一个字符串,该字符串可以在JavaScript中正确地计算为字符串文字。 (我不在乎它是否包含单引号或双引号 - 虽然我更喜欢单引号。它还必须支持字符串中的换行符。)

由于

2 个答案:

答案 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方法。