当我使用地址斜杠时,WordPress添加了第二个反斜杠

时间:2013-03-05 作者:soul

我不知道为什么,但当我使用以下函数时,wordpress似乎在添加第二个反斜杠:

addslashes($str_with_single_quotes)
addslashes(stripslashes($str_with_single_quotes));
esc_sql($str_with_single_quotes)
str_replace("\'", "/\'", $str_with_single_quotes)
我所做的是从不同的API获取数据,然后将这些数据转换为json字符串,以便以后可以访问它们:

$item_data = array(
    \'item_title\' => __(addslashes(stripslashes($item_name))),
    \'product_review\' => __(addslashes(stripslashes($product_review))),
    \'freebase_text\' => __(addslashes(stripslashes($freebase_result[\'text\'])))
);

$data = json_encode($item_data);
看起来不像是本地化功能(__()) 是导致问题的原因,因为问题仍然存在,即使我完全消除了它。

我也试过了preg_replace_all 但我遇到了一个致命错误,函数无法识别。我还尝试使用str_replace, esc_sql, 和str_replace 在数组被转换为json字符串之后,但运气不好。

我已经没有办法解决这个问题了。简单使用json_encode 如果不处理字符串,实际上不会做任何事情,单引号也不会被替换。

还禁用了魔法引号:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
提前谢谢。

1 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

在代码中,json\\u encode()函数会在下面的一行中添加第二个反斜杠。

$data = json_encode($item_data);
添加以下代码来代替上述代码,以便在json\\u encode函数返回的数据中用单反斜杠替换双反斜杠。

$data = str_replace("\\\\\\\'","\\\\\'",json_encode($item_data ));
有关json\\u encode函数的更多信息,请访问以下链接。

json_encode function

json_encode function Predefined Constants

告诉我它是否解决了你的问题,或者我会找到另一个解决方案。

结束

相关推荐

如何替换或显示JSON API插件中的特殊字符

我开始使用JSON API插件。它工作得很好!但我面临的问题是,如果我通过CMS输入任何包含特殊字符的文本,输出结果与给定的文本不一样。为什么会这样?示例:这是一个很好的应用程序(输入),输出看起来像';这是一个很好的应用程序。请提出任何摆脱这种情况的提示/方法。急切地等待你的回应。非常感谢。