我不知道为什么,但当我使用以下函数时,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
提前谢谢。
最合适的回答,由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
告诉我它是否解决了你的问题,或者我会找到另一个解决方案。