Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] parser rss
milek45
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


  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.

(IMG:http://forum.php.pl/style_emoticons/default/withstupidsmiley.gif)

Ten post edytował milek45 11.07.2007, 10:00:59
Go to the top of the page
+Quote Post
Stark
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 30.09.2006

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
milek45
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


  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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . Nawet po usunięciu pętli też mam jakis.
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
milek45
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


  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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Tylko jak ograniczyć żeby pokazywało tylko 5 wiadomości?

Ten post edytował milek45 11.07.2007, 11:31:02
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
milek45
post
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:47