Publikováno v sekci PHP v
aktualizováno
Na svém webu potřebuji zobrazovat tabulky ze současného mistrovství evropy ve fotbale ( EURO 2008). Ručně se mi nic aktualizovat nechce, a vkládat tabulky z jiného serveru např. pres I-frame už vůbec ne. Zvolil jsem proto cestu nejmenšího odporu - sice beru tabulky z jiného serveru, ale mohu si s nimi dělat chci ...
Vybral jsem si server SPORT, jelikož je bez výpadků, aktualizuje ihned po skončení zápasu a jeho kód je přehledný a snadný k parsování
1: /*<em> </em> showSoccerTable() <em> </em> Funkce umoznuje parsovat fotbalove tabulky ze serveru SPORT <em> </em> @date 12-06-2008 <em> @author Roman Janko <admin> </em> @param string $url nacitame konkretni tabulku ze serveru SPORT <em> @param integer $ttl nastavujeme dobu expirace stahovani, defaultne 3600 (1 hodina) </em> @return string <em> </em>/ function showSoccerTable($url = '', $ttl = 3600) { // vychozi priznak $cached = true; // nenalezen soubor nebo probehl expiraci if (!is_file("./cache/" . md5($url)) || time() - filemtime("./cache/" . md5($url)) > $ttl) $cached = false; // neni kesovano if (!$cached) { // debug //echo "znovu parsujeme tabulku - " . date('d.m.Y H:i:s'); $f = file_get_contents($url); if (!$f) { echo 'Nelze načíst - ' . $url ; return; } $table = preg_match("~<table id="\"teamTable\"">(.+?)</table>~s", $f, $out); $ourTable = '<table border="1">' . strip_tags($out[1], "<td>,</td><tr>,<table>,<th>") . '</th></table>'; // ulozime file_put_contents("./cache/".md5($url), $ourTable); } // nacteme tabulku $table = file_get_contents("./cache/".md5($url)); return $table; }
1: // Použití echo showSoccerTable('<a href="http://fotbal.sport.cz/tabulka?sectionId=708&competitionId=3">http://fotbal.sport.cz/tabulka?sectionId=708&competitionId=3</a>');Tato funkce je opět velmi jednoduchá ( jiné ani nepublikuji, protože nemám čas se rozepisovat :) a ani nechci vyvolávat nějaký flame se zkušenějšími programátory). Takže ve zkratce co dělá
Pokud si přejete tabulku nastylovat pomocí CSS stylu stačí přidat třídu k níže uvedenému kódu
1: $ourTable = '<table border="1">' => $ourTable = '<table border="1" class="moje-vlastni-trida">'Tato funkce fungovala v době vydání článku, pokud autoři serveru SPORT změní HTML výstup, tak asi přestane, uvidíme :)
Jelikož je tento článek stále žádaný a v komentářích jsou odkazy nefunkční nebo se špatně hledají přináším výčet všech dostupných parserů pro různé servery o které tu byl zájem: