Aggregatore di feed in php

Ecco come un piccolo script in php per  leggere un feed rss con php e xml. Vediamo ora come utilizzare uno degli script che si trovano più frequentemente in rete per leggere file xml con php, per leggere un feed rss e riportare sul proprio sito internet i link agli ultimi post di un blog o di un sito web. Vediamo per esempio come importare sul proprio sito gli ultimi 10 articoli pubblicati su Izzyweb.it.

Nella variabile $filename inseriamo l’indirizzo del feed rss. Con una piccola modifica potete anche non far visualizzare il link del sito originale,  per avere contenuti sempre nuovi nelle vostre pagine, con il minimo sforzo 😉

Ecco lo script in php

<?php
$filename="http://feedproxy.google.com/izzyweb/aTsa";
if( ! ($fp = fopen( "$filename" , "r" )) ){echo "Impossibile aprire il file xml!";}
$item_counter = 0;
$item_data = array();
$xml_current_tag_state = '';
function startElementHandler( $parser, $element_name, $element_attribs ){
	global $item_counter;
	global $item_data;
	global $xml_current_tag_state;
	$xml_current_tag_state = $element_name;
}
function endElementHandler( $parser, $element_name ){
	global $item_counter;
	global $item_data;
	global $xml_current_tag_state;
	$xml_current_tag_state = '';
	if( $element_name == "ITEM" ) {
		$item_counter++;
	}
}
function characterDataHandler( $parser , $data ){
	global $item_counter;
	global $item_data;
	global $xml_current_tag_state;
	if( $xml_current_tag_state == '' ) {
		return;
	}
	if( $xml_current_tag_state == "TITLE" ) {
		$item_data[$item_counter]["title"] = $data;
	}
	if( $xml_current_tag_state == "LINK" ) {
		$item_data[$item_counter]["link"] = $data;
	}
}
if( !($xml_parser = xml_parser_create()) ){
	die("Impossibile creare l' XML parser!");
}

xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");

while( $data = fread($fp, 4096) ){
	if( !xml_parse($xml_parser, $data, feof($fp)) )	{
		break; // esce dal loop quando finisce
	}
}
xml_parser_free($xml_parser);

for( $i=0 ; $i < $item_counter ; ++$i ){
	echo "<a href='".$item_data[$i]["link"]."'>".$item_data[$i]["title"]."</a><BR/>";
}
?>

1 commento su “Aggregatore di feed in php”

  1. Come si fa ad impostare che i feed siano un tot. in numero? Ovvero se ne voglio fare apparire solo 10?, solo 3? dove modifico lo script? Perche’ nel titole del post c’e’ scritto che e’ uno script per fare apparire 10 feed, ma non vi e’ traccia del numero 10 in questo scritp…. aiuto!
    grazie…

I commenti sono chiusi.

Torna in alto