-
<?php
-
-
/* Inizio impostazioni */
-
$numero_items=5;
-
$url_base_wikipedia="http://it.wikipedia.org"; // url base di wikipedia senza ultimo slash
-
$url_portale_wikipedia="http://it.wikipedia.org/wiki/Wikipedia:Progetto_Informatica/Lista_delle_voci_di_informatica"; // url da cui prelevare i links
-
/* Fine impostazioni */
-
-
function download_and_save_wiki($mese,$url_portale_wikipedia) {
-
-
/* Download wiki */
-
-
ini_set('user_agent',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6');
// settaggio user-agent per evitare codice di errore 403 da parte di Wikipedia
-
-
if ($wiki_content=@
file_get_contents($url_portale_wikipedia)) { // preleva sorgente pagina web
-
-
if (preg_match_all('/<li><a href="(.*)" title="(.*)">(.*)<\/a><\/li>/im',
$wiki_content,
$wiki_items)) { // estrazione links
-
$count_items=
count($wiki_items[0]);
-
for ($i=0; $i<$count_items; $i++) {
-
$wiki_item[$i]['h']=$wiki_items[1][$i]; // valore attributo href
-
$wiki_item[$i]['t']=$wiki_items[2][$i]; // valore attributo title
-
$wiki_item[$i]['n']=$wiki_items[3][$i]; // contenuto nodo
-
}
-
} else {
-
return -1; // nessun link trovato
-
}
-
-
/* Save wiki */
-
-
if (!
($file=
fopen(TEMPLATEPATH.
'/'.
$mese.
".txt",
"w"))) { // apre il file in scrittura
-
return -2;
-
}
-
$file_array=
serialize($wiki_item);
// prepara l'array per il salvataggio
-
if (!
(fwrite($file,
$file_array))) { // scrivo l'array nel file del mese
-
return -3;
-
}
-
$mese_prec=($mese==1?(12):($mese-1)); // mese precedente
-
@
unlink($mese_prec.
".txt");
// cancello il file del mese precedente
-
return $wiki_item; // ritorno l'array
-
} else {
-
return -4; // errore scaricamento pagina
-
}
-
}
-
-
function load_wiki($mese) {
-
if ($file=@
file_get_contents(TEMPLATEPATH.
'/'.
$mese.
".txt")) { // carico il contenuto del file
-
-
} else {
-
return -1; // errore caricamento file
-
}
-
}
-
-
$mese=
date('n');
// rappresentazione numerica del mese corrente (da 1 a 12)
-
-
-
$wiki_item=download_and_save_wiki($mese,$url_portale_wikipedia);
-
switch($wiki_item) { // gestione errori
-
case -1:
-
echo "<ul>\n<li>Non è stato trovato alcun link</li>\n</ul>\n";
-
case -2:
-
echo "<ul>\n<li>Impossibile creare il file di cache</li>\n</ul>\n";
-
case -3:
-
echo "<ul>\n<li>Impossibile scrivere sul file di cache</li>\n</ul>\n";
-
case -4:
-
echo "<ul>\n<li>Errore durante la connessione a <a href=\"http://it.wikipedia.org\" title=\"Wikipedia Italia\">Wikipedia</a></li>\n</ul>\n";
-
-
}
-
-
} else {
-
$wiki_item=load_wiki($mese);
-
switch($wiki_item) { // gestione errori
-
case -1:
-
echo "<ul>\n<li>Non è stato possibile prelevare i dati dalla cache</li>\n</ul>\n";
-
}
-
}
-
-
-
-
-
-
-
$count_items=
count($wiki_item);
-
$numero_items=($numero_items>$count_items || $numero_items<=0)?($count_items):($numero_items);
-
-
for ($i=0;$i<$numero_items;$i++) {
-
echo "<li><a href=\"".
$url_base_wikipedia.
$wiki_item[$i]['h'].
"\" title=\"Approfondisci su Wikipedia il significato di '".
$wiki_item[$i]['t'].
"'\">".
$wiki_item[$i]['n'].
"</a></li>\n";
-
}
-
-
-
}
-
-
?>
Scrivi un commento
Tags di formattazione: