Här följer ett par exempel på hur man kan hämta och använda data om elitserielagen och precis som i förra inlägget handlar det om att hitta rätt länkar. Vi kommer att använda filen vi skapade i förra inlägget, har du inte läst inlägget ännu, gör det gärna innan du fortsätter.
Exempel 1: Resultat, tabell och kommande matcher
Vi klickar först in oss på stats.swehockey.se, sedan väljer vi Elitserien och Overview.
Länken till överblickssidan är http://stats.swehockey.se/stat/44/90001/overview och det är den vi kommer att hämta (Psst -Det är ingen idé att ni försöker öppna den i er webbläsare eftersom swehockey bara skickar er tillbaka till huvudsidan). Sedan öppnar vi dokumentet vi skapade i föregående inlägg och gör ändringar enligt följande; -vi byter ut sidan vi hämtar data ifrån och redigerar ett par fraser i översättningen.
<?php $page = file_get_contents("http://stats.swehockey.se/stat/44/90001/overview");
$translate = array(
'Game Winning Shots Lost' => 'Förlust straffar',
'Game Winning Shots Won' => 'Vinst straffar',
'Results' => 'Resultat',
'Round' => 'Omgång',
'Date' => 'Datum',
'Game' => 'Match', 'Venue' => 'Hall',
'Spectators' => 'Publik',
'Last update' => 'Senaste uppdatering',
'Team' => ' Lag',
'Group Standings' => 'Tabell',
'Schedule' => 'Spelschema',
'Won' => 'Vunna',
'Lost' => 'Förlorade',
'Total Points' => 'Totala Poäng',
'Tied' => 'Oavgjorda',
'Matchs Played' => 'Spelade Matcher',
'Overtime' => 'Övertid -',
'Goals For:Goals Against (Goal Difference)' => ' Gjorda mål: Insläppta Mål (Målskillnad)'
);
foreach($translate as $eng => $swe) {
$page = str_replace($eng, $swe, $page);
}
echo $page;
echo "<style>.tdTopLinks{visibility:hidden;}</style>";
?>
Resultat blir inte så jättesnyggt men jag kommer gå vidare med hur vi ändrar utseendet med hjälp av css i ett senare exempel. Först rättar vi till några länkar: Klickar vi på länkarna i mathresultaten händer ingenting; -dels behöver vi lägga till stats.swehockey.se i länken,- dels har vi ju inte samma javascript som swehockey har på sin sida. Vi passar på att rensa upp lite javascript och stylesheet länkar.
Lägg till följande i översättnings arrayen:
"javascript:openonlinewindow('" => '',
'/gameonline/' => 'http://stats.swehockey.se/gameonline/', "',
'')" => '" target="_new" ',
'<div><a href="#"' =>'<div><span ',
'</a></div></td>' => '</span></div></td>',
'<body onLoad="NewStat()">' => '<body>',
'<link rel="stylesheet" type="text/css" href="/content/stylesheet.css" />' => ' ',
'<script type="text/javascript" src="/content/CommonFunctions.js">' => ' ',
'</script>' => ' '
Här kan ni se resultatet. Testa gärna länkarna.
Exempel 2: Dagens matcher -Live resultat
Att hämta dagens matcher från swehockey är lite krångligare än de tidigare exemplen eftersom texten på sidan byts ut beroende på om det är matchdag och om det är före, under, eller efter match. Länken till dagens matcher eller Tournamentonline som de kallar det är http://stats.swehockey.se/tournamentonline/523 och det är den vi ska hämta. Eftersom sidan innehåller <meta http-equiv=”refresh” content=”65″ /> i titlen slipper vi själva bekymra oss om att uppdatera sidan för att få det senaste resultat. Nedan ser ni min kod; lämna gärna en kommentar om jag har missat att översätta något. Här kan ni se resultatet.
<?php $page = file_get_contents(http://stats.swehockey.se/tournamentonline/523);
$translate = array(
'starts' => 'börjar',
'at' => '',
'Mchens' => 'Matcher',
'Games' => 'Matcher',
'Game' => 'Matchen',
'Upcoming / In Progress' => 'Kommande/Pågående',
'Today' => 'idag',
'Final Score' => 'Slutresultat',
'1st' => 'Första',
'2nd' => 'Andra',
'3rd' => 'Tredje',
'Results' => 'Resultat',
'Last upde' => 'Senaste uppdatering',
'Team' => ' Lag',
'Overtime' => 'Övertid',
'<a href="javascript:history.back()">[Back]</a>' => '', "javascript:openonlinewindow('" => '',
'/gameonline/' => 'http://stats.swehockey.se/gameonline/',
"','')" => '" target="_new" ',
'<body onLoad="NewStat()">' => '<body>',
'<link rel="stylesheet" type="text/css" href="/content/stylesheet.css" />' => ' ',
'<script type="text/javascript" src="/content/CommonFunctions.js">' => ' ',
'</script>' => ''
);
foreach($translate as $eng => $swe) { $page = str_replace($eng, $swe, $page); }
echo $page; ?>
Hej och tack för ditt suveräna arbete!
Får det inte att funka när jag lägger till koden för att öppna resultat länkarna i arryen.
Kan du posta hela koden?
Mvh John
Hej, det är hela koden som visas ovan. Vad får du för felmeddelande?
Så här har jag klistrat in i en ny fil som heter overview.php, förutom
:
'',
'/gameonline/' => 'http://stats.swehockey.se/gameonline/', "',
'')" => '" target="_new" ',
''<span ',
'' => '',
'' => '',
'' => ' ',
'' => ' ',
'' => ' ',
'Game Winning Shots Lost' => 'Förlust straffar', 'Game Winning Shots Won' => 'Vinst straffar',
'Results' => 'Resultat', 'Round' => 'Omgång', 'Date' => 'Datum', 'Game' => 'Match', 'Venue' => 'Hall',
'Spectators' => 'Publik', 'Last update' => 'Senaste uppdatering', 'Team' => ' Lag',
'Group Standings' => 'Tabell', 'Schedule' => 'Spelschema', 'Won' => 'Vunna', 'Lost' => 'Förlorade',
'Total Points' =>'Totala Poäng', 'Tied' => 'Oavgjorda', 'Matchs Played' => 'Spelade Matcher',
'Overtime' => 'Övertid -', 'Goals For:Goals Against (Goal Difference)' => ' Gjorda mål: Insläppta Mål (Målskillnad)'
);
foreach($translate as $eng => $swe) {
$page = str_replace($eng, $swe, $page);
}
echo $page;
echo ".tdTopLinks{visibility:hidden;}";
?>
När jag klickar på någon av resultat länkarna så öppnas ett felmedelande i samma fönster enligt nedan:
Microsoft OLE DB Provider for SQL Server error '80040e14'
Unclosed quotation mark after the character string ',') AND hasGame.Matchnr = 94210153'.
/Media/OfficialMediareport.asp, line 70
Fel kod, här är den rätta:
”,
‘/gameonline/’ => ‘http://stats.swehockey.se/gameonline/', ”‘,
”)” => ‘” target=”_new” ‘,
‘‘<span ',
'‘ => ”,
” => ”,
” => ‘ ‘,
” => ‘ ‘,
” => ‘ ‘,
‘Game Winning Shots Lost’ => ‘Förlust straffar’, ‘Game Winning Shots Won’ => ‘Vinst straffar’,
‘Results’ => ‘Resultat’, ‘Round’ => ‘Omgång’, ‘Date’ => ‘Datum’, ‘Game’ => ‘Match’, ‘Venue’ => ‘Hall’,
‘Spectators’ => ‘Publik’, ‘Last update’ => ‘Senaste uppdatering’, ‘Team’ => ‘ Lag’,
‘Group Standings’ => ‘Tabell’, ‘Schedule’ => ‘Spelschema’, ‘Won’ => ‘Vunna’, ‘Lost’ => ‘Förlorade’,
‘Total Points’ =>’Totala Poäng’, ‘Tied’ => ‘Oavgjorda’, ‘Matchs Played’ => ‘Spelade Matcher’,
‘Overtime’ => ‘Övertid -’, ‘Goals For:Goals Against (Goal Difference)’ => ‘ Gjorda mål: Insläppta Mål (Målskillnad)’
);
foreach($translate as $eng => $swe) {
$page = str_replace($eng, $swe, $page);
}
echo $page;
echo ”.tdTopLinks{visibility:hidden;}”;
?>
Det går att klistra in koden här men den visar fel när man skickar!
Kan jag maila dig .php filen så kanske det är enklare för dig att se problemet?
Har fått till det så den öppnar ett nytt fönster men länken till innehållet är fel, den inkluderar ‘,’ bakom enligt nedan:
stats.swehockey.se/Media/OfficialMediareport.asp?qsSerieId=94210&qsMatchNr=94210161&qsSeasonId=44′,’
Rätt länk ska vara:
stats.swehockey.se/Media/OfficialMediareport.asp?qsSerieId=94210&qsMatchNr=94210161&qsSeasonId=44
Om du undrar så har jag inte tagit med http.
Om någon undrar så löste vi detta genom att lägga varje del av arrayen på en egen rad.
John tipsade också om att man även kan länka in stylesheetet från swehockey!
För att skriva kod i kommentarsfältet kan man omringa sin kod med [ php ] kod [ /php ]