使用PHP从网站提取数据

时间:2011-02-28 23:19:59

标签: php screen-scraping web-scraping

我正在尝试让PHP从具有以下文本的网页中提取TOKEN(大写的),USERID(大写)和USER NAME(大写)。

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

(这是来自RTM api,获取用户的身份验证令牌)。

我该怎么做呢?谢谢!

修改

我如何获得任务名称“购买牛奶!” &安培;任务“2011-02-28T ..”的截止日期在这里使用json_decode和php?谢谢!

{
   "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 个答案:

答案 0 :(得分: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参数将对象转换为关联数组。

另一个更新要回答您更新的问题..

  

我如何获得任务名称“购买牛奶!” &安培;任务“2011-02-28T ..”的截止日期在这里使用json_decode和php?谢谢!

此代码可用于获取所需的值。

//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'];

此代码并不理想,但它可以帮助您完成工作。

答案 1 :(得分:0)

如果字符串是JSON,PHP中的json_decode就可以解决问题。它是在PHP 5.2.0中实现的。

http://www.php.net/manual/en/function.json-decode.php