当我在json值中传递双引号时双引号(“)+ str_replace()用于双斜杠和多个斜杠+ json_decode()不工作

时间:2016-01-21 12:50:26

标签: php json

我正在将数据转换为这样的数据

$data=json_decode(str_replace("\\","",$_GET['data']));

通过这种方式,它会给我空白数据。

如果我像这样传递它将会有效

$data=json_decode($_GET['data']);

但是每当我执行它时,这个东西的问题在我的字符串中越来越多。

我在$ _GET ['data']中传递json:

[
{
"id":"1",
"about":"about_details",
"biodata":"Always \"happy",
"sharedetails":"\\\\New happening\"",
"fname":"username"
}
]

我不想在我的字符串中删除双引号",我也想删除双斜杠\\。请给我一个更好的解决方案

1 个答案:

答案 0 :(得分:0)

使用这样的四个斜杠

 $data=json_decode(str_replace("\\\\","",$_GET['data']));

这里发生的事情是你正在逃避你的斜线。基本上,\\表示一个斜杠,而\\\\表示两个斜杠。带有三个斜杠的str_replace将导致解析错误,因为您正在转义引号。

工作示例:http://www.tehplayground.com/#1UjQOXT2W

由于您只指定了一个斜杠(\\),因此您将在字符串中替换每个单斜杠。这导致了

  

{ “ID” 为 “1”, “大约”: “about_details”, “生物数据”:“总是   “happy”,“sharedetails”:“新发生”“,”fname“:”用户名“}

请注意新发生后的两个引号。这不是一个无法解码的有效json字符串