<?php
// Haal alles van de server
function getRsUserRawHtml($user){
	$fp = fsockopen("hiscore.runescape.com", 80, $errno, $errstr, 30); 
	if (!$fp) die ("$errstr ($errno)<br />\n"); 
	   $out = "GET /aff/runescape/hiscorepersonal.cgi?username=$user HTTP/1.1\r\n"; 
	   $out .= "Host: hiscore.runescape.com\r\n"; 
	   $out .= "Connection: Close\r\n\r\n"; 
	   fwrite($fp, $out); 
	   $html = "";
	   while (!feof($fp)) { 
	       $html .= fgets($fp, 1240); // Gooi alle html van de pagina in een variabele, let op: de http-headers zitten er ook in
	   } 
	fclose($fp);
	return $html;
}
// Checkt of de invoer alphanumeriek is, alle namen in RS zijn alphanumeriek
function alphaNumeriek($text, $extra = "") {
    for ($i = 0; $i < strlen($text); $i++) {    	
    	if (!ereg("[A-Za-z0-9 $extra]", $text[$i])) {
    		return false;
    	}
    }
    return true;
}
function getRsUserArray($source, $disciplines){
	// Verander de rauwe html code in een grote array
	if(!strpos($source, "does not currently appear in the hiscores")){
		foreach ($disciplines as $value){
			if(strstr($source, $value) !== false){
				$temp = explode("$value</a></td>\n<td align=\"right\">", $source);
				$temp = explode("\n</td></tr>\n", $temp['1'], 2);
				// $temp['0'] is van belang;
				$temp2 = explode("\n</td><td align=\"right\">\n", $temp['0']);
				$temp = explode("</td><td align=\"right\">\n", $temp2['0']);
				$return[$value]['rank']  = $temp['0'];
				$return[$value]['level'] = $temp['1'];
				$return[$value]['xp'] 	 = $temp2['1']; // Inderdaad, een hoog mierengeneuk, maar trim() deed het niet :(
			} else {
				$return[$value] = array("rank" => "0", "level" => "0", "xp" => "0");
			}
		}// Einde array
		return $return;
	} else {
		return false;
	}
}
// Veranderd de naam zo, dat je hem naar de server van RS kunt sturen, 
// komt eigenlijk neem op naar lowercase en " " veranderen in "+"
function getRsUsername($name){
	if(alphaNumeriek($name, "+")){
		strtolower($name);
		return str_replace(" ", "+", $name);
	} else {
		return false;
	}
}
	
// Alles hieronder is alleen maar om te laten zien hoe je het script kunt gebruiken,
// de kern van het script staat hierboven en heeft als doel om alle stats van een
// RS-speler in een grote array te zetten. De Combat Level is er helaas niet in terug te vinden..

$user = "Weed Tiger"; // Voer hier je naam in
$user = getRsusername($user);

if(!$user) die("Geen of ongeldige gebruikersnaam!");

$disciplines = array('Overall', 'Attack', 'Defence', 'Strength', 'Hitpoints', 'Ranged', 'Prayer', 'Magic', 'Cooking', 'Woodcutting', 'Fletching', 'Fishing',
'Firemaking', 'Crafting', 'Smithing', 'Mining', 'Herblore', 'Agility', 'Thieving', 'Slayer', 'Farming', 'Runecrafting');

$rankings = getRsUserArray( getRsUserRawHtml($user), $disciplines);

if($rankings !== false){
	echo "<table>\n<tr><td>Discipline</td><td>Rank</td><td>Level</td><td>XP</td></tr>\n";
	foreach($rankings as $name => $values){
		if($values['rank'] !== "0"){
			echo "<tr><td>$name</td><td>".$values['rank']."</td><td>".$values['level']."</td><td>".$values['xp']."</td></tr>\n";
		}
	}
	echo "</table>\n";
} else {
	echo "Deze persoon komt niet voor in de hiscores";
}
// var_dump($rankings); // haal "//" aan het begin weg om de structuur van de array te zien waar alle skills met hun waardes staan
?>