2016-04-14 38 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