2016-01-21 54 views
1

我得到的數據爲$數據這樣雙引號(「)+ str_replace()函數比雙斜線+ json_decode(雙斜線及以上)不工作

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

通過這種方式,它會給我的空白數據。

它會工作,如果我將它傳遞這樣

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

但隨着這件事情的問題在我的字符串越來越多,每次添加\當我將執行它

我傳遞JSON像這樣$ _GET [「數據」]:

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

我不想刪除雙引號"到我的字符串也我想刪除雙斜線\\。請給我提供一個更好的解決方案

回答

0

用四顆斜線這樣

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

這裏發生的事情是,你逃避你的斜線。基本上,\\意味着一個斜線,而\\\\意味着兩個斜線。帶有三個斜槓的str_replace將導致分析錯誤,因爲您正在轉義報價。

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

當你指定了一個斜槓(\\),你替換你串單斜線的每次出現。這導致

{ 「ID」: 「1」, 「約」: 「about_details」, 「生物數據」: 「總是 」快樂「,」 sharedetails 「:」 新發生的 「」,其中 「fname」 :「用戶名」}

注意新發生之後的兩個引號。這是不是一個有效的JSON字符串是不可能解碼

+0

0123按照我的問題,它將工作文件,如果我不通過任何值,但如果我把它傳遞到任何值,它將無法正常工作,因爲str_replace()if我將在刪除str_replace後嘗試,它會完美的工作,但給我\\更多的在我的字符串 – jilesh

+0

你有一個在新發生的逃脫報價如果您從字符串中刪除斜槓,它不會轉義,因此打破整個字符串 –

+0

根據你的建議添加\\\\它會起作用,但它會在「 – jilesh