logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PHP czytnik RSS na stronie nie wyświetla <description> – jak poprawić skrypt?

buszi 25 Mar 2006 20:58 1554 1
REKLAMA
  • #1 2457075
    buszi
    Poziom 11  
    Posty: 11
    heja
    mam problem
    chce zamiescic na stronce czytnik rss, ale nie czaje za bardzo tego

    mam jeden gotowiec, ale on nie wyswietla mi tego co jest w <description>

    prosilbym bardzo o pomoc

    oto gotowy skrypt bez przerobki
    <?php
    
      #===========================================
      # Silnik tego skryptu zapo&iquest;yczony zosta&sup3; 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&aelig; aktualizacja
      
      $folder = "rss/"; // Adres folderu, w którym znajdowa&aelig; si&ecirc; b&ecirc;d&sup1; pliki z newsami.
      
      $adres = "http://www.webdiary.pl/backend.php"; // Adres URL do kana&sup3;u RSS
      $nazwa_kanalu = "WebDiary.PL | Wiadomosci ze swiata IT"; // Tytu&sup3; kana&sup3;u RSS
      $liczba = 10; // Iloœc nag&sup3;ówków newsów, które maj&sup1; by&aelig; wyswietlane
      $target = "_blank"; // Opcja target="" dla newsów, mo&iquest;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&sup3;u
    
      #==========================
      # Operacje zwi&sup1;zane ze sprawdzaniem aktualnoœci nag&sup3;ó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&sup3; aktualizowany
           
      } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dost&ecirc;p do kana&sup3;u RSS
    
      	  #==========================
    	  # Operacja zwi&sup1;zane z dodawaniem nowego nag&sup3;ówka do pliku
    	  #==========================
    
    	  $rssHandle = fopen($adres,"r") ; // Otwiera plik kana&sup3;u RSS
    
    	  while (!feof($rssHandle)) {
    	  	$rssData .= fgets($rssHandle);
    	  }
    
    	  #==========================
    	  # Przygotowywanie newsa do w&sup3;&sup1;czenia do pliku
    	  #==========================
    	  $tag = "item ";
    	  $rssData =  preg_replace("/<" . $tag . "(.|\s)*?>/","<item>",$rssData);
    	  $rssData = chop($rssData); // Usuwanie pustych spacji z ko&ntilde;ca linijek   
    	  $rssData = ereg_replace("[\r,\n]", "", $rssData); // Usuwwanie pustych linijek
    	  $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>.
    
    	  #==========================
    	  # Usuwanie zb&ecirc;dnych elemntów tak aby okrojona zawartoœ&aelig; mog&sup3;a zosta&aelig; zapisana w pliku
    
    	  # Tagi <description></description> zostaj&sup1; pomini&ecirc;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&sup3;ówkami
      
      	  $title = array();
    	  $link = array();
    
    	  #==========================
    	  # Ten mechanizm tworzy tablice dla linków oraz nag&sup3;ó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]);
    		$link[$x] = str_replace(" ","+",$link[$x]);
    
    		$title[$x] = strstr($rssArray[$x],"<title>");
      		$title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z cz&ecirc;œci tytu&sup3;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&iquest; nie ma nag&sup3;ówków zmienna $liczba przyjmuje wartoœ&aelig; maksymaln&sup1;.
    		$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&ecirc;tla zapisuje ka&iquest;dy link osobno.
      		fwrite($fp,"<br>\n-<a class=\"headlinellink\" target=\"$target\" title=\"$title[$x]\" href=\"$link[$x]\">$title[$x]</a>");
    		$x++;
    	  }
    	 fclose($fp);
    	 include $folder;
    
     } else { 
    	#==========================
    	# Zwracanie b&sup3;&ecirc;du gdy podany adres jest b&sup3;&ecirc;dny.
    	#==========================
    	echo "<b>Nie mozna po&sup3;&sup1;czy&aelig; si&ecirc; z adresem: $adres. </b>";
    
    }
    
    ?>
    
  • REKLAMA
REKLAMA