Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] preg_match, file_get_contents, pętla
Forum PHP.pl > Forum > Przedszkole
thurinon
Staram się zrobić tabelkę Sprawa wygląda tak:
Mam kilka linków

  1. $urls = array(
  2. 'link-1',
  3. 'link-2',
  4. 'link-3',
  5. 'link-4',
  6. 'link-4'
  7. );


Za pomocą preg_match chcę z każdej z tych stron wybrać kilka elementów. Następnie wyciągnięte dane z każdej ze stron umieścić w wierszu tabeli.

Kod może to wyjaśni lepiej:


  1.  
  2. <!DOCTYPE html>
  3. <meta charset="utf-8" />
  4.  
  5. <style type="text/css">
  6.  
  7. td {border: 1px solid black;}
  8.  
  9. </style>
  10.  
  11. </head>
  12. <tr>
  13. <td width="25%;">Nazwa</td>
  14. <td width="25%;">Kod</td>
  15. <td width="25%;">Opis skrócony</td>
  16. <td width="25%;">Opis</td>
  17. </tr>


  1.  
  2. $urls = array(
  3. 'link-1',
  4. 'link-2',
  5. 'link-3',
  6. 'link-4',
  7. 'link-4'
  8. );
  9.  
  10.  
  11.  
  12. foreach($urls as $url)
  13. {
  14. $file = file_get_contents($url);
  15. if (false === $file)
  16. continue;
  17.  
  18. preg_match('#<h2>(.+?)<\/h2>#s', $file, $name);
  19.  
  20.  
  21. echo '<td>'.$name[1].'</td>';
  22. }
  23.  
  24.  
  25. foreach($urls as $url)
  26. {
  27. $file = file_get_contents($url);
  28. if (false === $file)
  29. continue;
  30.  
  31. preg_match('#<p>(.+?)<\/p>#s', $file, $code);
  32.  
  33.  
  34. echo '<td>'.$code[1].'</td>';
  35. }
  36.  
  37.  
  38. foreach($urls as $url)
  39. {
  40. $file = file_get_contents($url);
  41. if (false === $file)
  42. continue;
  43.  
  44. preg_match('<strong>(.+?)<\/strong>#s', $file, $short);
  45.  
  46.  
  47. echo '<td>'.$short[1].'</td>';
  48. }
  49.  
  50.  
  51.  
  52. foreach($urls as $url)
  53. {
  54. $file = file_get_contents($url);
  55. if (false === $file)
  56. continue;
  57.  
  58. preg_match('#<span>(.+?)<\/span>#s', $file, $desc);
  59.  
  60.  
  61. echo '<td>'.$desc[1].'</td>';
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  


Teraz jak widać kod jest jakiś hmmmm mało optymalny, oraz nie wyświetla danych ze strony w jednym wierszu (w tym kodzie akurat to nic dziwnego bo brakuje <tr>). Problem tutaj polega na tym dla mnie, że jak dodam początek wiersza przed $name i koniec wiersza po $desc to i tak nie działa, ponieważ najpierw mi wyświetli 3 razy name itd.

Prosiłbym o pomoc z tymi wierszami, i ew. optymalizacją kodu.
tzm
http://simplehtmldom.sourceforge.net/

PS. A jakbym wiedział z jakiej strony kradniesz dane to bym bardziej pomógł bo tak w ciemno nie wiedząc jak strona jest zbudowana, to i salomon nie napisze kodu.
thurinon
To mi teraz dałeś popalić hehe. Dzięki wielkie - postaram się znaleźć tam to co mi potrzebne. Na razie udało mi się to coś uruchomić. smile.gif
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.