Jeśli ktoś chce to sobie odpalić na windzie z linii poleceń to można np. tak:
c:\PHP>php-cgi.exe poiplaza.php >poiplaza.htm
później otworzyć gotowe poiplaza.htm w przeglądarce albo też wystawić sobie na stronkę pod apacza czy iis'a ten skrypt poiplaza.php i kliknąć przeglądarą ;-)
W aktualnym kodzie zasysam Polskę i poi'e dla iGo8 niemniej dwoma kliknięciami można zmienić na dowolny inny kraj czy inną wersję poi na inna nawigację.
Poniższy kod jest trochę zniekształcony przez koloryzator składni i zacytowałem go tutaj wyłacznie poglądowo dlatego też działający kod trzeba pobrać z mojego chomika: http://chomikuj.pl/saphireee/nawigacja/programiki/poiplaza.zip
<?php
// (c)2009 Bartek 'saphire' Siebab
//
// remember: increasese enough php execution time in php.ini
// this script lasts loooongggg...
// becouse plenty pages has to be opened and parsed...
//
$country=32; // 32=Poland - get this from url of choosen country
$target='[iI][gG][oO]8';//igo8 partly regexp
$download='http://www.poiplaza.com/';
$url='http://poiplaza.com/index.php';
$countryurl=$url . '?p=dc&c=' . $country;
$poipageurl=$countryurl . '&lpg=&d=&pg=';
$crlf=chr(13).chr(10);
// now lets do this
$countrybody=http_parse_message(http_get($countryurl))->body;
preg_match('/ \d*[ ]*[\/][ ]*\d* [ ]*/',$countrybody,$matches );
$pages=explode("/",str_replace(' ','',str_replace(' ','',$matches[0])));
$minpage = $pages[0];
$maxpage = $pages[1];
$n=0;
for ($pg=$minpage; $pg<=$maxpage;$pg++) {
$poipagebody=http_parse_message(http_get($poipageurl . $pg))->body;
preg_match_all('/\<a href\=\"\?p\=sdb&d\=\d*\&lstpg\=ds\&lsts\=\_LSTS\_\"\>.*\<\/a\>/',$poipagebody,$matches );
$i=0;
foreach ($matches[0] as $key => $value) {
preg_match_all('/\d*/',$value,$poiurl);
$poiid = $poiurl[0][18]; // in 18th field is poi id
$poiadr = $url . '?p=download&d=' . $poiid . '&lstpg2=sdb&lstpg=ds&lsts=_LSTS_';
$n++; // lets create table with poiid and poiurl
$poi[$n][0] = $poiid;
$poi[$n][1] = $poiadr;
//print $poi[$n][0] . ' # ' . $poi[$n][1] . ' <br> ';
$i++;
} // end of foreach loop
} // end of for loop
// now clear some useless variables
unset($poiid);
unset($poiadr);
unset($countrybody);
unset($poipagebody);
unset($matches);
// *************************************************************************
print $crlf;
print '<html><title>Poiplaza full country POI download spider (c)2009 Bartek \'saphire\' Siebab</title><body>'.$crlf;
print '<b>Poiplaza full country POI download spider (c)2009 Bartek \'saphire\' Siebab</b><br><br>' . $crlf;
print 'Country id: ' . $country . ' found '.$n.' POI\'s<br><br>'. $crlf;
// now lets loop and open every poi page
for ($pg=1; $pg<=$n;$pg++) {
//print $poi[$pg][1];
$poipagebody=http_parse_message(http_get($poi[$pg][1]))->body;
$linkregexp='/download\/zipfiles\/\d*\/.*' . $target . '[.][zZ][iI][pP]/';
preg_match($linkregexp,$poipagebody,$matches);
$poireadyurls[$pg]=$matches[0];
} // end of for loop
// now lets make a plain text show
print 'Ready copy & paste box:<br><br><code>'.$crlf;
for ($pg=1; $pg<=$n;$pg++) {
print($download . $poireadyurls[$pg] . '<br>'. $crlf);
} // end of for loop
print '</code><br><br>'.$crlf;
// now lets make a href show
print 'Clickable url\'s box:<br><br>'.$crlf;
for ($pg=1; $pg<=$n;$pg++) {
print('<a href="'.$download . $poireadyurls[$pg] .'">'.$download . $poireadyurls[$pg].'</a><br>'. $crlf);
} // end of for loop
print '<br>'.$crlf;
print '</body></html>'.$crlf;
// again clear some variables
unset($poipagebody);
unset($matches);
unset($poireadyurls)
?>