ďťż

[PHP] przechodzenie do odnośników

       

Podstrony


telcocafe

Witam,
mam taki oto problem:
załóżmy, że jest sobie takie kod źródłowy html
<br /><br /><br> <a href="link1.html">link</a> <br /><br /><br><div></div> <br /> <a href="link2.html">link2</a> <br /><br> <a href="link3.html">link3</a> <h1></h1>tekst<br />tekst tekst! <a href="link4.html">link4</a>

i teraz mam pytanie, jak za pomocą funkcji file_get_contents mógłbym automatycznie wejść na te strony i pobrać ich treść? Chciałbym aby kod PHP automatycznie wykrywał linki w kodzie źródłowym i przechodził pod adresy które są w tych linkach zawarte. Linki są różne na różnych podstronach.

Wie ktoś jak to ugryźć, jakiś pomysł, kod, sugestia?
pozdrawiam



<?php $searchText = '<a href="'; $pageContent = file_get_content($address); $pages[]; $i = 0; while(($pos=strpos($pageContent, $searchText)) !== FALSE){ $pageContent = substr($pageContent, $pos); $endPos = strpos($pageContent, '.html'); $linkHref = substr($pageContent, 0, $endPos); $pages[$i] = file_get_content($linkHref); $i++; } for($x = 0; $x < count($pages); $x++){ echo $pages[$x];} ?>

Nie wiem tylko, czy powinno być $pageContent = substr($pageContent, $pos); czy $pageContent = substr($pageContent, $pos+9); (9 to długość łańcucha <a href="), ale to możesz sam poprawić jakby nie działało tak.

Ogólnie starałem się nie kombinować, pewnie można to by było zrobić lepiej (szybsza wersja np.) ale w PHP już dawno niczego nie robiłem :)

PS - ważne! w tym kodzie nie tylko dołączasz plik za pomocą include, ale także oddzielnie przekazujesz skryptowi adres menu. Oczywiście da się to przerobić tak, aby to ten skrypt wyświetlał menu i potem je "przerabiał" - wystarczy to opakować w funkcję i na początku includować dołączany plik.

Jak coś potrzebujesz wyjaśnić to pytaj.

//Edycja: @poniżej: a nie mówiłem, da się zrobić szybciej :P
Użytkownik Tomek92 edytował ten post 24 czerwiec 2008, 11:03
preg_match_all + odpowiedni regExp

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.