Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] parser rss
Forum PHP.pl > Forum > Przedszkole
milek45
  1. <?php
  2. Function Parsuj($url) {
  3.  
  4. $dane=file_get_contents($url);
  5.  
  6. preg_match_all(&#8221;/(.*?)</item>/is”, $dane, $wpisy);
  7.  
  8. FOR($i=0; $i
  9.  
  10. preg_match_all(&#8221;/</title>/is”, $wpisy[1][$i], $tytul);
  11. (.*?)</link>/is&#8221;, $wpisy[1][$i], $link);
  12. preg_match_all(&#8221;/(.*?)</description>/is”, $wpisy[1][$i], $opis);
  13. $opis=str_replace(&#8221; $opis=str_replace(”]]>”, “”, $opis);
  14. $tytul=str_replace(&#8221; $tytul=str_replace(”]]>”, “”, $tytul);
  15. $link=$link[1][0];echo &#8216;‘.$tytul.’
  16. &#8216;.$opis.’
  17. &#8216;.$link;
  18. }
  19.  
  20. }
  21. Parsuj(&#8221;http://rss.gazeta.pl/pub/rss/wiadomosci.xml”);
  22. ?>


Prosty parser kanału rss. Ma wyświetlać wiadomości z kanału rss.
Niestety wysypuje mi sie co chwila. Moja znajomość php to tylko podstawa. Probowałem na prawo i na lewo i ciągle jest bład.

withstupidsmiley.gif
Stark
Zacznij od zamkniecia tego:
  1. <?php
  2. FOR($i=0; $i
  3. ?>


Nastepnie popraw funkcje preg_match_all, caly pierwszy argument powinien byc zamkniety w cudzyslow. To samo tyczy sie funkcji str_replace (dwa pierwsze argumenty).
milek45
  1. <?php
  2. Function Parsuj($url) {
  3.  
  4. $dane=file_get_contents($url);
  5.  
  6. preg_match_all(&#8221;/(.*?)</item>/is”, $dane, $wpisy);
  7.  
  8. FOR($i=0; $i
  9.  
  10. preg_match_all('/</title>/is”, $wpisy[1][$i], $tytul');
  11. preg_match_all('/(.*?)</link>/is”, $wpisy[1][$i], $link');
  12. preg_match_all('/(.*?)</description>/is”, $wpisy[1][$i], $opis');
  13. $opis=str_replace('$opis=str_replace(”]]>”, “”, $opis');
  14. $tytul=str_replace('$tytul=str_replace(”]]>”, “”, $tytul');
  15. $link=$link[1][0];
  16. echo '.$tytul.''.$opis.''.$link';
  17. }
  18.  
  19. }
  20. Parsuj(&#8221;http://rss.gazeta.pl/pub/rss/wiadomosci.xml”);
  21. ?>


Doszedłem do takiego czegoś. Tylko nie wiem jak zamknać tą pętle bo cały czas mam jakiś bład sad.gif. Nawet po usunięciu pętli też mam jakis.
JaRoPHP
Dlaczego nie skorzystasz z gotowych funkcji? Wymyślasz koło na nowo...
Plik RSS jest plikiem XML, więc najbardziej do jego przetwarzania bedą sie nadawały funkcji do obsługi xml-a.

Zapoznaj się z tym:
- SimpleXML functions,
- DOM XML Functions.
milek45
  1. <?php
  2. $rss = simplexml_load_file('http://kanaly.rss.interia.pl/przeglad_prasy.xml');
  3.  
  4. foreach($rss -> channel -> item as $item){
  5. foreach($item -> enclosure as $enclosure){
  6. }
  7.  
  8.  $title = iconv("UTF-8","ISO-8859-2","$item->title");
  9.  $description = iconv("UTF-8","ISO-8859-2","$item->description");
  10.  
  11. echo '<big>'.$title.'</big><br />'.$description.'<br /><br />';
  12.  
  13.  }
  14. ?>


To mi już działa smile.gif. Tylko jak ograniczyć żeby pokazywało tylko 5 wiadomości?
JaRoPHP
Wprowadź licznik (dodatkowa zmienna) inkrementowany po każdej iteracji pętli foreach" title="Zobacz w manualu PHP" target="_manual. Jeżeli osiągnie on pewną wartość, wywołaj funkcję: break" title="Zobacz w manualu PHP" target="_manual.
milek45
Może jednak ktoś by jakoś naprawił ten pierwszy skrypt, ponieważ ten drugi mi nie chodzi na innym serwerze (brak funkcji simplexml_load_file) a niestety admin umywa ręce.
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.