Skocz do zawartości


Zdjęcie

[PHP] Pobieranie elementów z RSS - gotowy skrypt


  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Saletra

Saletra

    Zaawansowany użytkownik

  • 937 postów

Napisano 06 12 2010 - 19:58

Witam,

Ponieważ czasem trzeba wyświetlić na stronie linki z oddalonego RSS-a napisałem do tego skrypt w PHP. Są podobne rzeczy w Sieci, ale nieco archaiczne i obciążające serwer. Starałem się to zminimalizować w moim skrypcie. Wymaga PHP > 5.
<?php
//header("Content-Type: text/html; charset=iso-8859-2"); 
//RSSerPHP
//Autor: Saletra


/* Zmienne, kolejno: czas odświeżania (w minutach - należy zmieniać wyłącznie liczbę), ilość pobieranych elementów, plik cache, adres XML-a */
  $czas = '-60 minutes';
  $ileRss = 10;

//Folder dla pliku cache musi mieć CHMOD 777.
  $file = "rss/cache.htm"; 
  $plikRss = 'http://www.forum.tweaks.pl/rss/forums/1-forum-komputerowe/';

// Sprawdza czy plik trzeba odswiezyc, jeśli nie, wyświetla dane z cache
if(is_file($file) && (date('d-m-Y H:i:s', filemtime($file))) >=  date('d-m-Y H:i:s', strtotime($czas))){

echo file_get_contents($file);

// Buduje plik cache
} else {
  $doc = new DOMDocument();
  $doc->load($plikRss);
  $i=0;

if(is_file($file)){
$wyczysc = file_put_contents($file, '');
}
$fp = fopen($file, "w+"); 
  foreach ($doc->getElementsByTagName('item') as $node) {
	if($i>=$ileRss){
		break;
	}
	$i++;
    $itemRSS = array ( 
      'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
      'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
      );
	/* Konwertuje z UTF-8 na ISO-8859-2, można włączyć jeśli są problemy z polskimi znakami. Wymagane iconv na serwerze 
		$itemRSS['title'] = iconv('UTF-8', 'ISO-8859-2', $itemRSS['title']); */ 

	$link = "<a href='".$itemRSS['link']."'>".$itemRSS['title']."...</a> ";
	echo $link;
	fwrite($fp, $link);  
  }
fclose($fp); 
}
?>



Zobacz więcej tematów z tagiem: RSS



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych