Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Pobieranie zawartości strony i zapisywanie jako xml
Forum PHP.pl > Forum > Przedszkole
Maze123987
Witam,

Chciałbym zapisać dane z kodu źródłowego pewnej strony do pliku xml. Działanie to miałoby się odbywać w pętli na określonych id strony.

Załóżmy, że adres strony to http://nazwa/temat.php?id=X
jej kod źródłowy wygląda następująco:



  1. ...
  2. <title> Tytuł</title>
  3. <link rel="stylesheet" type="text/css" href="styl.css" />
  4. </head>
  5. <div class="body">
  6. <div id="header" >
  7. ...
  8. </div>
  9. </div>
  10. <div class="body2">
  11. <div id="pagetitle">
  12. <h1><a href="adres">Tytuł</a></h1>
  13. </div>
  14. <ul>
  15. <li id="1">
  16. <div class="header">
  17. <div class="date">DATE</div>
  18. <span class="username">USERNAME</span>
  19. </div>
  20. <div class="title">Tytuł</div>
  21. <div class="tresc">
  22. <blockquote><b><u>Tytuł</u></b><br />
  23. TREŚĆ
  24. </div>
  25. </li>
  26. <li id="2">
  27. <div class="header">
  28. <div class="date">DATE</div>
  29. <span class="username">USERNAME</span>
  30. </div>
  31. <div class="tresc">
  32. TREŚĆ
  33. </div>
  34. </body>
  35. </html>


Chciałbym pobrać zawartość w taki sposób:
  1. <strona>
  2. <tytul>"title"</tytul>
  3. <tresc>"tresc" (gdzie li id="1")</tresc>
  4. <username>"username"</username>
  5. <date>"date"</date>
  6. </strona>


Ma ktoś jakiś pomysł?
thek
xpath?
Geniesis
Jeżeli strony nie zmieniają swojego szablonu to możesz użyć wyrażeń regularnych.
Mniej więcej wyglądało by to tak (schemat):
1. Otwierasz stronę (file_get_contents) i zapisujesz zawartość do zmiennej
2. Używasz odpowiednich wyrażeń regularnych w stylu:
  1. if(preg_match('/<title>(.*?)<\/title>/', $webCode, $aTitle)){
  2. } else {
  3. //tutaj wyjątek lub kolejna reguła jeżeli wszystkie strony nie są identyczne
  4. }
  5. ...
  6. $aDataToXML = array(
  7. 'title' => $aTitle[1],
  8. ...
  9. );


3. Tworzysz szablon do którego dane zmienne mają być wrzucone np.
  1. $xmlData = '
  2. <tytul> ' . $aDataToXML['title] . ' </tytul>\n
  3. ...
  4. ';

4.Tworzysz plik do którego będzie zapisany wygenerowany kod
5.Zapisujesz do pliku (file_put_contents )


Jeżeli wszystko ubierzesz odpowiednio w funkcje to bez problemu dynamicznie powinno działać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.