Ayant un site internet (http://www.halo-france.com), je cherche actuellement à afficher des statistiques de joueurs (du jeu Halo 3) directement sur ce dernier (le seul endroit où l'ont peut voir ces stats, c'est sur le site officiel, mais aucun moyen de les récupérer :( ).
Après une longue recherche, j'ai trouvé ce site : http://haloapi.com/ , après l'avoir consulté, j'en ai déduis que grâce au code qu'il fournissait, il était possible de récupérer les stats voulu (ô joie à ce moment là)
MAIS (et là ça se gâte ^^), n'ayant que très peu (pour pas dire pas du tout) de connaissance en XML et en "parsage", je suis très perdu :s
Voici le code récupéré :
<?php
$result = get_web_page("http://haloapi.com/api/player/index.php?gamertag=TheIronChef9&key=xxx");
$stats = haloapi($result,0);
$Construct_kills = $stats['root']['Construct']['kills'];
print $Construct_kills;
function get_web_page( $url )
{
$ch = curl_init( $url );
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_ENCODING, "");
$content = curl_exec( $ch );
curl_close( $ch );
return $content;
}
//START FUNCTIONS
function haloapi($contents, $get_attributes=1) {
if(!$contents) return array();
if(!function_exists('xml_parser_create')) {
//print “‘xml_parser_create()’ function not found!”;
return array();
}
//Get the XML parser of PHP - PHP must have this module for the parser to work
$parser = xml_parser_create();
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
xml_parse_into_struct( $parser, $contents, $xml_values );
xml_parser_free( $parser );
if(!$xml_values) return;//Hmm…
//Initializations
$xml_array = array();
$parents = array();
$opened_tags = array();
$arr = array();
$current = &$xml_array;
//Go through the tags.
foreach($xml_values as $data) {
unset($attributes,$value);//Remove existing values, or there will be trouble
//This command will extract these variables into the foreach scope
// tag(string), type(string), level(int), attributes(array).
extract($data);//We could use the array by itself, but this cooler.
$result = "";
if($get_attributes) {//The second argument of the function decides this.
$result = array();
if(isset($value)) $result['value'] = $value;
//Set the attributes too.
if(isset($attributes)) {
foreach($attributes as $attr => $val) {
if($get_attributes == 1) $result['attr'][$attr] = $val; //Set all the attributes in a array called ‘attr’
/** :TODO: should we change the key name to ‘_attr’? Someone may use the tagname ‘attr’. Same goes for ‘value’ too */
}
}
} elseif(isset($value)) {
$result = $value;
}
//See tag status and do the needed.
if($type == "open") {//The starting of the tag ‘‘
$parent[$level-1] = &$current;
if(!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag
$current[$tag] = $result;
$current = &$current[$tag];
} else { //There was another element with the same tag name
if(isset($current[$tag][0])) {
array_push($current[$tag], $result);
} else {
$current[$tag] = array($current[$tag],$result);
}
$last = count($current[$tag]) - 1;
$current = &$current[$tag][$last];
}
} elseif($type == "complete") { //Tags that ends in 1 line ‘‘
//See if the key is already taken.
if(!isset($current[$tag])) { //New Key
$current[$tag] = $result;
} else { //If taken, put all things inside a list(array)
if((is_array($current[$tag]) and $get_attributes == 0)//If it is already an array…
or (isset($current[$tag][0]) and is_array($current[$tag][0]) and $get_attributes == 1)) {
array_push($current[$tag],$result); // …push the new element into that array.
} else { //If it is not an array…
$current[$tag] = array($current[$tag],$result); //…Make it an array using using the existing value and the new value
}
}
} elseif($type == 'close') { //End of tag ‘‘
$current = &$parent[$level-1];
}
}
return($xml_array);
}
?>
Le but étant, de pouvoir afficher les statistiques d'un joueur (dans la variable $result, le pseudo du joueur se trouve à côté du gamertag), mais le problème c'ets que tout ça ne me renvois absolument rien :-/
Alors si quelqu'un pourrait un peu m'éclairer, j'en serais très reconnaissant :)
Bonne journée et merci d'avance !
A voir également:
XML-PHP : parser puis afficher.
Xml viewer - Télécharger - Édition & Programmation