2013-12-18, 19:22
  #1
Medlem
Ehfraims avatar
God kväll kära bröder.

Jag vill göra följande: Hämta informationen om när nästa Milan-match är härifrån:http://www.acmilan.com/en/season/serie_a/next_match

Det jag vill hämta är datum, tid samt mot vilka. Resultatet ska se ut något såhär:

22/12 2013 20:45: Inter - Milan

Just nu har jag en fulkod som hämtar ut allt innehåll mellan en specifik div, det går sådär resultat blir inte som jag tänkt. Datumet hänger bland annat inte med och det blir väldigt fult.

[PHP]
// Läser in hemsida
$data = file_get_contents('http://www.acmilan.com/en/season/serie_a/next_match');

//Anger mönstret som ska användas, dvs. att hämta info från en specifik div, samt en enkel nästling.
$pattern_long = '{
<section\s+id="incontro_riassunto"\s*>
(
(?:
(?: (?!<section[^>]*>|</section>). )++
|
<section[^>]*>(?1)</section>
)*
)
</section>
}six';

// Kort version av samma regex
$pattern_short = '{<section\s+id="incontro_riassunto"\s*>((???! <section[^>]*>|</section>).)++|<section[^>]*>(?1)</section>)*)</section>}si';

$matchcount = preg_match_all($pattern_long, $data, $matches);

echo("<pre>\n");
if ($matchcount > 0) {
echo("$matchcount matches found.\n");

for($i = 0; $i < $matchcount; $i++) {
echo("\nMatch #" . ($i + 1) . ":\n");
echo($matches[1][$i]);
}
} else {
echo('No matches');
}
echo("\n</pre>");

[/PHP]

Tips, tankar, idéer? Tack på förhand!
Citera
2013-12-18, 20:05
  #2
Medlem
JackBlacks avatar
Det finns massa sätt att göra det på. Så här har jag gjort:

[PHP]
//hämta data
$data = file_get_contents('http://www.acmilan.com/en/season/serie_a/next_match');
//datum
$date_pattern = '{<time datetime="([^"]+)}';
//match
$match_pattern = '{<section\s+id="incontro_riassunto"\s*>((???! <section[^>]*>|</section>).)++|<section[^>]*></section>)*)</section>}s';
//lag
$team_pattern = '{<div class="nomesquadra">([^<]+)</div>}';

//datum och match ska ge träff
if (preg_match($date_pattern, $data, $date) && preg_match($match_pattern, $data, $match)) {
//lag ska ge två träffar och milan ska vara ett av lagen (kan vara helt onödig kontroll)
if (preg_match_all($team_pattern, $data, $team) == 2 && in_array('MILAN', $team[1]) ) {
echo $date[1].': '.ucfirst(strtolower($team[1][0])).' - '.ucfirst(strtolower($team[1][1]));
}
}

[/PHP]
__________________
Senast redigerad av JackBlack 2013-12-18 kl. 20:10.
Citera
2013-12-18, 20:54
  #3
Medlem
Ehfraims avatar
Jag är evigt tacksam, JackBlack! Fungerar klockrent, samtidigt som det gav mig kunskap om de övriga små grejer jag ska knåpa ihop.

Stort tack!
Citera
2013-12-19, 12:21
  #4
Medlem
fnirps avatar
Citat:
Ursprungligen postat av Ehfraim
Jag är evigt tacksam, JackBlack! Fungerar klockrent, samtidigt som det gav mig kunskap om de övriga små grejer jag ska knåpa ihop.

Stort tack!

Bara som en liten blänkare, du kan få en arg informationsägare (www.acmilan.com) på halsen, då du snyltar på någon annans ihopsamlade information.

Jag har råkat ut för det när jag "lånade" tv.nu:s data till en egen, privat tablå. Det gillades inte alls, dels för att de i sin tur hade skrivna avtal. med straffklausuler, om hur de fick dela med sig informationen till tredje part, men säkert lika mycket om inte mer för att jag snyltade på deras arbete.
Citera
2013-12-20, 08:06
  #5
Medlem
Ehfraims avatar
Citat:
Ursprungligen postat av fnirp
Bara som en liten blänkare, du kan få en arg informationsägare (www.acmilan.com) på halsen, då du snyltar på någon annans ihopsamlade information.

Jag har råkat ut för det när jag "lånade" tv.nu:s data till en egen, privat tablå. Det gillades inte alls, dels för att de i sin tur hade skrivna avtal. med straffklausuler, om hur de fick dela med sig informationen till tredje part, men säkert lika mycket om inte mer för att jag snyltade på deras arbete.
Hade jag inte en tanke på faktiskt. Kanske är bäst att kolla med dem, alternativt ta från någon mindre sida med mindre makt. Tack för varningen!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in