2011-02-28 89 views
2

我想讓PHP使用以下文本從網頁中提取TOKEN(大寫字母),USERID(大寫字母)和USER NAME(大寫字母)。從使用PHP的網站提取數據

{ 
    "rsp":{ 
     "stat":"ok", 
     "auth":{ 
     "token":"**TOKEN**", 
     "perms":"read", 
     "user":{ 
      "id":"**USERID**", 
      "username":"**USER NAME**", 
      "fullname":"**NAME OF USER**" 
     } 
     } 
    } 
} 

(這是來自RTM API,獲取用戶的身份驗證令牌)。

我該怎麼做呢?謝謝!

編輯: 「買牛奶」

我怎麼會得到任務名稱&使用json_decode和php的任務「2011-02-28T ..」的截止日期?謝謝!

{ 
    "rsp":{ 
     "stat":"ok", 
     "tasks":{ 
     "rev":"REV_NUMBER", 
     "list":{ 
      "id":"ID_NUMBER", 
      "taskse­­ries":{ 
       "id":"ID_NUMBER", 
       "created":"2010-11-16T00:01:50Z", 
       "modified":"2011-02-28T05:09:36Z", 
       "name":"Buy Milk!", 
       "source":"js", 
       "url":"", 
       "location_id":"", 
       "rrule":{ 
        "every":"1", 
        "$t":"FREQ=W­­EEKLY;INTERVAL=1" 
       }, 
       "tags":[ 

       ], 
       "participants":[ 

       ], 
       "notes":[ 

       ], 
       "task":{ 
        "id":"ID_NUMBER"     ­­, 
        "due":"2011-02-28T05:00:00Z", 
        "has_due_time":"0", 
        "added":"2011-02-21T05:04:49Z", 
        "completed":"", 
        "deleted":"", 
        "priority":"2", 
        "postponed":"0", 
        "estima­­te":"" 
       } 
      } 
     } 
     } 
    } 
} 

回答

2

至於桑德蘭建議,使用json_decode。以下是如何使用json_decode來提取所需信息的示例。

// your json string 
$string = '{"rsp":{"stat":"ok","auth":{"token":"**TOKEN**","perms":"read","user":{"id":"**USERID**","username":"**USER NAME**","fullname":"**NAME OF USER**"}}}}'; 

// parse json string to an array 
$array = json_decode($string, true); 

// auth token 
echo $array['rsp']['auth']['token']; 

// user details 
echo $array['rsp']['auth']['user']['id']; 
echo $array['rsp']['auth']['user']['username']; 
echo $array['rsp']['auth']['user']['fullname']; 

UPDATE我已經更新爲使用json_decode的$ assoc命令參數從一個對象轉換爲ASSOC數組的代碼。

另一個更新要回答你的問題,更新..

我怎麼會得到任務名稱「買牛奶!」 &使用json_decode和php的任務「2011-02-28T ..」的截止日期?謝謝!

此代碼可用於獲取所需的值。

//string(9) "Buy Milk!" 
echo $array['rsp']['tasks']['list']['taskseries']['name']; 

// string(20) "2011-02-28T05:00:00Z" 
echo $array['rsp']['tasks']['list']['taskseries']['task']['due']; 

此代碼並不理想,但它爲您完成了工作。

+0

感謝您的快速回答;我有一個像這樣的命令來提取信息:「$ taskname = $ array-> rsp-> tasks-> list-> taskseries-> name;」 PHP將list識別爲「list」命令,而不是實際上JSON字符串中的「list」名稱......如何解決這個問題?謝謝!!! – 01jayss 2011-03-01 01:06:21

+0

更新json_decode來使用這個:$ array = json_decode($ string,true); – McHerbie 2011-03-01 01:13:36

+0

@ 01jayss,我已經更新了使用json_decode的$ assoc參數將對象轉換爲assoc的答案。陣列。這應該解決你遇到的問題。 – McHerbie 2011-03-01 01:16:13