Site icon Noir Solutions

Creare un Feed RSS Reader con PHP e Ajax

E adesso faremo proprio quanto dichiarato nel titolo , ossia una guida su come creare un lettore di Feed RSS. E per fare questo utilizzeremo i linguaggi di programmazione PHP e Ajax e ovviamente un pizzico di HTML. Che cosa sia un Feed presumo lo sappiate meglio di me, per ogni buon conto in caso contrario potete sempre leggere le guide che vi lascio in questa pagina.

Lettore di RSS Feed Reader

 

Entriamo nello specifico di quello che andremo a fare . Utilizzeremo due file. Nel primo file ci metteremo il codice html che ci permetterà di selezionare un feed piuttosto che un altro e la tecnologia utilizzata sarà AJAX in modo tale che non appena avrete fatto la vostra selezione apparirà immediatamente sotto il vostro RSS Feed.

Mentre nel secondo file semplicemente metteremo il codice PHP che ci permetterà di fare il parsing di un feed RSS.

Come potete vedere non è nulla di particolarmente complicato.

 

Questo è il file index.php

 

<html>
<head>
<script>
function showRSS(str) {
  if (str.length==0) {
    document.getElementById("rssOutput").innerHTML="";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("rssOutput").innerHTML=this.responseText;
    }
  }
  xmlhttp.open("GET","leggirssfeed.php?q="+str,true);
  xmlhttp.send();
}
</script>
<title>Lettore Feed RSS Reader PHP Ajax</title>
</head>
<body>

<form>
<select onchange="showRSS(this.value)">
<option value="">Selezione una fonte da cui leggere le Notizie:</option>
<option value="PHP">Noirsolutions PHP</option>
<option value="WP">Noirsolution WordPress</option>
</select>
</form>
<br>
<marquee direction="up" vspace="50" scrollamount="5" height="500" width="600">

Lettore Feed Rss

<div id="rssOutput">.....</div>

</marquee>
</body>
</html>

Che come potete vedere è composto da ajax e html . Vi chiede di fare una selezione nello specifico chiediamo se volete leggere notizie di PHP oppure notizie di WordPress. Come potete vedere ho aggiunto qualche elemento html per renderlo scorrevole (marquee) ma nulla di più. Il tutto viene quindi passato all’Ajax che controlla lo status e invia una richiesta al file leggirssfeed.php che è il seguente

 

<?php
//prendi il parametro q dal sito
$q=$_GET["q"];

//vedi quale selezione hai scelto.
if($q=="PHP") {
  $xml=("https://www.noirsolutions.net/php/feed/");
} elseif($q=="NBC") {
  $xml=("www.noirsolutions.net/wordpress-italia/feed/");
}

$xmldocumento = new DOMDocument();
$xmldocumento->load($xml);

//prendi elemento feed "<channel>"
$canale=$xmldocumento->getElementsByTagName('channel')->item(0);
$canale_title = $canale->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$canale_collegamento = $canale->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$canale_descrizione = $canale->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;

//mostra in output gli elementi relativi al sito 
echo("<p><a href='" . $canale_collegamento
  . "'>" . $canale_title . "</a>");
echo("<br>");
echo($canale_descrizione . "</p>");

//mostra in ouutput i feed raccolti
$x=$xmldocumento->getElementsByTagName('item');
for ($i=0; $i<=2; $i++) {
  $item_title=$x->item($i)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_collegamento=$x->item($i)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_descrizione=$x->item($i)->getElementsByTagName('description')
  ->item(0)->childNodes->item(0)->nodeValue;
  echo ("<p><a href='" . $item_collegamento
  . "'>" . $item_title . "</a>");
  echo ("<br>");
  echo ($item_descrizione . "</p>");
}
?>

 

Il risultato finale lo potete trovare su Esempio Lettore .

E’ ovvio che da qui potete fare tutte le aggiunte e personalizzazioni del caso.  Per problemi lasciate pure un messaggio che vi risponderò.

Exit mobile version