DownloadToString();
set_error_handler("error_handler");
$cardHTML = file_get_contents($url);
restore_error_handler();
if ($cardHTML == false)
{
return "";
}
$tmp = preg_split("/<\/head>/", $cardHTML);
$tmp = preg_split("/<\/html>/", $tmp[1]);
$cardHTML = preg_replace(array("@@si", "@@si"), array("", ""), $tmp[0]); // Strip SCRIPT tags - not valid XML
$xml = domxml_open_mem("" . $cardHTML);
if (!$xml)
{
print "Error parsing XML";
exit;
}
$root = $xml->document_element();
$xpath = $xml->xpath_new_context();
$card = new GamerCard();
$card->tag = $gamerTag;
// Membership type (Gold/Silver)
$elems = $xml->get_elements_by_tagname("h3");
foreach($elems as $elem)
{
$class = $elem->get_attribute("class");
if ($class == "XbcGamertagGold")
$card->memberType = "Gold";
else if ($class == "XbcGamertagSilver")
$card->memberType = "Silver";
}
// Gamer picture
$obj = $xpath->xpath_eval('//img[@class="XbcgcGamertile"]');
$nodeset = $obj->nodeset;
$card->gamerPictureUrl = $nodeset[0]->get_attribute("src");
// Gamerscore
$obj = $xpath->xpath_eval('//span[preceding-sibling::span/img[@alt="Gamerscore"]]');
$nodeset = $obj->nodeset;
$card->score = $nodeset[0]->get_content();
// Rep
$obj = $xpath->xpath_eval('//span[preceding-sibling::span="Rep"]/img');
$nodeset = $obj->nodeset;
$url = $nodeset[0]->get_attribute("src");
$tmp = preg_split("/[._]/", $url);
$card->rep = $tmp[3];
// Zone
$obj = $xpath->xpath_eval('//span[preceding-sibling::span="Zone"]');
$nodeset = $obj->nodeset;
$card->zone = $nodeset[0]->get_content();
// Recently Played
$obj = $xpath->xpath_eval('//div[@class="XbcgcGames"]//img');
$nodeset = $obj->nodeset;
foreach($nodeset as $node)
{
$card->recentlyPlayed[] = $node->get_attribute("title");
}
return $card;
}
?>