* @license http://www.opensource.org/licenses/bsd-license.php The BSD License */ /** * Parser for highscores lite pages. * This parser parses the data out of page containing all the skill data for * one person. The data is returned as an array where each index is the colum * in the page in lower case (either 'skill', 'level', 'rank' or 'xp'). And each * value contains array containing the data for skills. Note that skills which * are not ranked for the person are not contained within the array. * * @package RSHiLib_Parser */ class lite_parser extends page_parser { /** * Parses skill data out of the lite pages. * @param string Page to parse for data * @return array Returns array of skill data, or false on failure */ public function parse ($page) { global $rshl_skills; // Generate empty array $char = array( 'skill' => array(), 'rank' => array(), 'level' => array(), 'xp' => array(), ); // Return empty array, if we got the page no found (i.e. not available) if (strpos($page, '404 - Page not found') !== false) { return $char; } $count = preg_match_all('/(-?\d+),(-?\d+),(-?\d+)/', $page, $match); if (!$count) { trigger_error('Invalid highscore page', E_USER_WARNING); return false; } // Make sure the number of skills in highscores and on us matches if ($count != count($rshl_skills)) { trigger_error('Invalid number of skills', E_USER_WARNING); return false; } $skills = array_values($rshl_skills); // Add existing skills to the return value for ($i = 0; $i < $count; $i++) { if (intval($match[1][$i]) > 0) { $char['skill'][] = $skills[$i]; $char['rank'][] = $match[1][$i]; $char['level'][] = $match[2][$i]; $char['xp'][] = $match[3][$i]; } } return $this->make_int($char); } } ?>