Mam parser, który potrafi ze wskazanego adresu pobrać dane rekurencyjnie.
Podaję mu link typu http://www.stronka.pl/szczecin/sights_baths/ i on pięknie dla jednego miasta wyciąga dane
Chcałbym tak przerobić parser, żeby z zewnętrznego pliku pobierał po kolei kolejne miasta [zapisane rozdzielając je przecinkami - plik txt, wszystko w jednej linii] stosując tą samą metodykę jak poniższy kod. Zapis odbywać ma się tak jak tudo jednego pliku, ale od razu dla wszystkich miast z zewnętrznego pliku.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <?php // sprawdzenie czy jest to pierwsze wywolanie strony, czy tez wywolanie do przetwarzania podanej strony { // poprawienie podanego adresu URL (dopisanie http:// oraz znaku / na koncu, jesli ich nie bylo) // oraz przygotowanie nazwy pliku i otwarcie pliku do zapisu $xml_url = $_POST["url"]; if ( substr_compare($xml_url, '/', -1, 1) != 0 ) $xml_url = $xml_url.'/'; $xml_url = $xml_url.'places.xml'; $crlf = "\r\n"; // pobranie pliku XML oraz przetwarzanie jego zawartosci w petli foreach $xmlDoc = new DOMDocument(); $xmlDoc->loadXML($xml_string); $xml = $xmlDoc->documentElement; foreach ($xml->childNodes AS $node) { if ($node->nodeName=='schmap:Place') { $tytul = ''; $url = ''; $krotki_opis = ''; $telefon = ''; $miasto = ''; $kod_pocztowy = ''; $adres = ''; $email = ''; foreach ($node->childNodes AS $item) { if ($item->nodeName=='dc:title') $tytul = $item->nodeValue; if ($item->nodeName=='vcard:URL') $url = $item->nodeValue; if ($item->nodeName=='dc:description') $krotki_opis = $item->nodeValue; if ($item->nodeName=='vcard:TEL') foreach ($item->childNodes AS $dane_telefon) if ($dane_telefon->nodeName=='rdf:value') $telefon = $dane_telefon->nodeValue; if ($item->nodeName=='vcard:ADR') foreach ($item->childNodes AS $dane_adresowe) { if ($dane_adresowe->nodeName=='vcard:Locality') $miasto = $dane_adresowe->nodeValue; if ($dane_adresowe->nodeName=='vcard:Pcode') $kod_pocztowy = $dane_adresowe->nodeValue; if ($dane_adresowe->nodeName=='vcard:Street') $adres = $dane_adresowe->nodeValue; } } // koniec FOREACH fwrite($plik, '"'.$tytul.'","'.$krotki_opis.'",'.$miasto.','.$kod_pocztowy.',"'.$adres.'",'.$telefon.','.$url.','.$email.$crlf); } // koniec IF } // koniec FOREACH // koniec przetwarzania, podanie odsylacza do pobrania pliku wynikowego } // koniec IF // jesli to pierwsze wywolanie strony, pokazujemy formularz wstepny do podania strony do przetworzenia else { ?> <label for="url">Proszę podać adres strony do przetworzenia:</label><br><br> <input name="url" value="" size="70"><br><br> <input type="submit" value="Rozpocznij przetwarzanie"> </form> <?php } ?></body></html>
Poproszę pomóżcie mi bo nie dam rady z ręki wszystkiego obecną metodą zrobić
Pozdr. Y