2016-04-14 48 views
0

字符串如下所示。如何解碼JSON字符串以獲取單個屬性

string(202) 
"{"_id":"2","_rev":"2-2251dd9912477d8a2b91c6fd5ce62faf","_attachments":{"creativecommons.pdf":{"content_type":"text/pdf","revpos":2,"digest":"md5-AyV8c76dsfqfGF1BBdQIIw==","length":280357,"stub":true}}} ` 

我想preg_match_all是一種方法,但我還不知道它的語法。 Maby有另一種方式。一些幫助將不勝感激。

+0

如果你建立了一個JSON字符串,它是一個壞主意,讓creativecommons.pdf'作爲的'一類的名稱當json_decoded到一個PHP對象時,它不是一個有效的類名 – RiggsFolly

回答

-1

的preg_match應該做

語法將preg_match('/length":(.*),/', $string, $array);

preg_match會將結果放入一個數組中,所以在這種情況下:

$array[0]應該是「長「:280357 ,;」,

$array[1]應該是‘280357’

+0

作爲JSON字符串,它更容易'json_decode()'並且使用數組或對象表示法。 _edit:不是我的downvote_男人對DV有點粗糙有1個代表的傢伙 – RiggsFolly

+0

這絕對是做錯的辦法。不要使用正則表達式來解碼JSON編碼的字符串。 – Andreas

+0

你是對的,儘管至少他現在知道preg_match的語法,下次他需要它時,他說他不知道這個問題。 –

1

您的字符串是JSON字符串。 「美化」 它看起來像這樣:

{ 
    "_id": "2", 
    "_rev": "2-2251dd9912477d8a2b91c6fd5ce62faf", 
    "_attachments": { 
     "creativecommons.pdf": { 
      "content_type": "text/pdf", 
      "revpos": 2, 
      "digest": "md5-AyV8c76dsfqfGF1BBdQIIw==", 
      "length": 280357, 
      "stub": true 
     } 
    } 
} 

您可以使用json_decode($JSONstring, true);,使之成爲多維數組:

$decoded = json_decode($JSONstring, true); 
$myLengthValue = $decoded['_attachments']['creativecommons.pdf']['length']; 
echo $myLengthValue; //Returns 280357