Nx Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Witam :) Mam taki mały problem gdy chcę czytać plik rss ze strony http://rss.gazeta.pl/pub/rss/wiadomosci.xml (skrypt pobrałem ze strony www.hotscripts.pl) otóż w pliku rss.php mam coś takiego: <?php #=========================================== # Silnik tego skryptu zapożyczony został z czytnika RSS w wersji PHP z # oprogramowania RSS GET, oryginalna wersja programu na stronie: http://www.aarondunlap.com #=========================================== $czas = 30; // Co ile ma być aktualizacja $folder = "rss/"; // Adres folderu, w którym znajdować się będą pliki z newsami. $adres = "http://rss.gazeta.pl/pub/rss/wiadomosci.xml"; // Adres URL do kanału RSS $nazwa_kanalu = "Wiadomosci"; // Tytuł kanału RSS $liczba = 10; // Ilośc nagłówków newsów, które mają być wyswietlane $target = "_blank"; // Opcja target="" dla newsów, możliwe: "_self" oraz "_blank" $autoupdate = TRUE; $trunc = FALSE; $delim = FALSE; if (isset($_GET['rssHeadline'])) { $rssHeadline = $_GET['rssHeadline'];} $basefile = $folder; $folder .= md5($adres).".htm"; // Przygotowywanie nazw plików dla danego kanału #========================== # Operacje związane ze sprawdzaniem aktualności nagłówków w pliku tekstowym #========================== if (($czas > 0) && (is_file($folder)) && (((time()-filemtime($folder)) < ($czas * 60)))) { include $folder; $time = floor((time()-filemtime($folder)) / 60); // Sprawdza ile minut temu plik był aktualizowany } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dostęp do kanału RSS #========================== # Operacja związane z dodawaniem nowego nagłówka do pliku #========================== $rssHandle = fopen($adres,"r"); // Otwiera plik kanału RSS while (!feof($rssHandle)) { $rssData .= fgets($rssHandle); } #========================== # Przygotowywanie newsa do włączenia do pliku #========================== $tag = "item "; $rssData = preg_replace("/<" . $tag . "(.|\s)*?>/","<item>",$rssData); $rssData = chop($rssData); // Usuwanie pustych spacji z końca linijek $rssData = ereg_replace("[\r,\n]", "", $rssData); // Usuwwanie pustych linijek $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>. #========================== # Usuwanie zbędnych elemntów tak aby okrojona zawartość mogła zostać zapisana w pliku # Tagi <description></description> zostają pominięte #========================== $tags_and_content_to_strip = Array("description"); foreach ($tags_and_content_to_strip as $tag) { $rssData = preg_replace("/<" . $tag . ">(.|\s)*?<\/" . $tag . ">/","",$rssData); } $rssData = str_replace("<item>","", $rssData); // usuwanie tagu <item> $rssData = urldecode($rssData); // Zamiana wszystkich: %20 na spacje. $rssData = str_replace(strstr("</channel>",$rssData),"",$rssData); $rssArray = explode("</item>",$rssData); // Tworzenie tablicy z nagłówkami $title = array(); $link = array(); #========================== # Ten mechanizm tworzy tablice dla linków oraz nagłówków #========================== $x = 0; while($x < $liczba) { $link[$x] = strstr($rssArray[$x],"<link>"); // usuwanie wszystkiego przed <link> $link[$x] = ereg_replace("<link>","",$link[$x]); $link[$x] = str_replace(strstr($link[$x],"</link>"),"",$link[$x]); $link[$x] = trim($link[$x]); $title[$x] = strstr($rssArray[$x],"<title>"); $title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z części tytułu newsa $title[$x] = str_replace(strstr($title[$x],"</title>"),"",$title[$x]); // Usuwanie </title> oraz wszystkiego poza nim $title[$x] = trim($title[$x]); if ($trunc != FALSE) { $title[$x] = str_replace(substr($title[$x],$trunc),"",$title[$x]); } if ($delim != FALSE) { $title[$x] = str_replace(strstr($title[$x],$delim),"",$title[$x]); } if ($title[$x] == "") { $liczba = $x; break; } // Gdy już nie ma nagłówków zmienna $liczba przyjmuje wartość maksumalną. $x++; } #========================== # Zapis do pliku #========================== $fp = fopen($folder, "w+"); $x=0; fwrite($fp,"<b><span class=\"displayname\">$nazwa_kanalu</span></b> \n"); // zapisywanie do pliku while ($x < $liczba) { // ta pętla zapisuje każdy link osobno. fwrite($fp,"<br>\n-<a class=\"headlinellink\" target=\"$target\" href=\"$link[$x]\">$title[$x]</a>"); $x++; } fclose($fp); include $folder; } else { #========================== # Zwracanie błędu gdy podany adres jest błędny. #========================== echo "<b>Nie mozna połączyć się z adresem: $adres. </b>"; } ?> Mam utworzony folder RSS i nadałem mu CHMOD 777 A przy próbie połączenia rss wyskakuje coś takiego Nie mozna połączyć się z adresem: http://rss.gazeta.pl/pub/rss/wiadomosci.xml Wiecie co jest żle ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nx Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 Przepraszam za double posta ale nikt nie potrafi pomóc :( ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 24 Marca 2008 Filar Społeczności Udostępnij Opublikowano 24 Marca 2008 Za długi kod by komuś się chciało analizować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 24 Marca 2008 Administratorzy Udostępnij Opublikowano 24 Marca 2008 @fopen($adres,"r")) zwraca false, zatem wywoływane jest ostatnie else i tyle. a czemu plik się nie otwiera ? nie wiem :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 27 Marca 2008 Udostępnij Opublikowano 27 Marca 2008 Wogóle kod taki dziwny. Teraz się nieużywa preg_matchów do XML'a. Chyba, że to pisane pod PHP4, ale jeśli nie to lepiej użyć SimpleXML i przynajmiej z nim składnia ładnie wygląda :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się