0

我正在尝试从 Steam API 检索比赛信息,由于我的 PHP 和 XML 知识有限,到目前为止,我一直在使用您的精彩网站来帮助我完成这项任务,但已经卡住了。在尝试找到解决方案大约 6 小时后,我想我会在这里问这个问题,因为可能有一个非常简单的解决方案。

从 Steam API 中提取此信息的直接 URL 如下:https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=123456789&format=xml&key=mysteamkey

我创建了一个 html 表单来提交 MatchID 到这个,以便我可以根据需要更改它,代码如下:

<form action="retrieval.php" method="post">
MatchID <input type="text" name="MatchID">
<input type="submit">
</form>

和retrieval.php:

$context  = stream_context_create(array('https' => array('header' => 'Accept: application/xml')));
$url1 = 'https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=';
$url2 = $_POST["MatchID"];
$url3 = '&format=xml&key=<mykeyhere>';
$urlfinal = $url1 . $url2 . $url3;

$xml = file_get_contents($urlfinal, false, $context);
$xml = simplexml_load_string($xml);

如果我 print_r($xml); 这使用示例 MatchID,我得到以下信息: http://www.nimserv.com/chromebrowser.png http://www.nimserv.com/pagesource.png 所以在我天真的理解中,它似乎正在成功检索数据.

所以终于说到点子上了,如果啰嗦了,请见谅。我将如何继续这样做才能使每一行都具有可以查询的格式,以准备插入数据库?我尝试过使用一些 XMLParse 方法,并且能够将其转换为 html 文本,我可能会编写一个脚本来获取这些信息并对其进行适当的排序,但是我确信有更好的方法可以做到这一点,比那个。如前所述,我的编程知识是有限的,所以我在工作的过程中学到了很多东西。

感谢您的宝贵时间,感谢您提供的任何帮助。

4

1 回答 1

0

未经测试:

foreach( $xml->players->player as $player ) {
  echo 'id: ', $player->account_id, "\n";
  ...
}
于 2013-04-02T14:28:08.887 回答