<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBlog.it &#187; curl</title>
	<atom:link href="http://phpblog.it/tag/curl/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 30 Jan 2012 10:36:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Leggere RSS per proporre contenuti esterni</title>
		<link>http://phpblog.it/2008/02/11/leggere-feed-rss-e-pubblicare-i-dati-xml/</link>
		<comments>http://phpblog.it/2008/02/11/leggere-feed-rss-e-pubblicare-i-dati-xml/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 06:00:43 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://php5blog.it/2008/02/11/leggere-feed-rss-e-pubblicare-i-dati-xml/</guid>
		<description><![CDATA[La gran parte (se non la totalità) dei blog e dei siti web oramai dà la possibilità di seguire l&#8217;aggiornamento dei contenuti, oltre che con la normale navigazione, sfruttando i feed RSS nell&#8217;aggregatore che più ci piace. RSS (acronimo di RDF Site Summary ed anche di Really Simple Syndication) è uno dei più popolari formati [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/02/rss.jpg" alt="rss" />La gran parte (se non la totalità) dei blog e dei siti web oramai dà la possibilità di seguire l&#8217;aggiornamento dei contenuti, oltre che con la normale navigazione, sfruttando i <strong>feed RSS</strong> nell&#8217;aggregatore che più ci piace. <strong>RSS</strong> (acronimo di <em><a href="http://it.wikipedia.org/wiki/Resource_Description_Framework" title="Resource Description Framework">RDF</a> Site Summary</em> ed anche di <em>Really Simple Syndication</em>) è <strong>uno dei più popolari formati per la distribuzione di contenuti Web è basato su <a href="http://it.wikipedia.org/wiki/XML" title="XML">XML</a></strong>, da cui ha ereditato la semplicità, l&#8217;estensibilità e la flessibilità.<span id="more-210"></span></p>
<p>Come già detto la fruizione di questi feed RSS è davvero semplice utilizzando delle applicazioni o dei servizi che svolgono il compito di aggregare le informazioni provenienti da più fonti, ma <strong>come fare ad utilizzare i dati contenuti nell&#8217;xml per proporli per esempio su una pagina web?</strong> Vediamo come fare con <strong>PHP</strong> e <a href="http://it.php.net/manual/it/ref.simplexml.php" title="PHP SimpleXML"><strong>SimpleXML</strong></a>.</p>
<p>Innanzitutto bisogna avere un link ad un feed RSS, prendiamo per esempio quello di questo blog e lo assegnamo ad una variabile:</p>
<p><code>$request = 'http://feeds.feedburner.com/php5blogit/';</code></p>
<p>a questo punto non resta che <strong>recuperare i dati contenuti nel feed</strong>. Le strade percorribili sarebbero 2: utilizzare la funzione <strong><a href="http://it2.php.net/manual/it/function.file-get-contents.php" title="file_get_contents">file_get_contents</a></strong> oppure sfruttare le <strong><a href="http://it2.php.net/manual/it/ref.curl.php" title="funzioni curl">funzioni curl</a></strong>. Il risultato finale utilizzando l&#8217;una o l&#8217;altra strada sarebbe lo stesso, il problema della scelta dipende principalmente dalle impostazioni dell&#8217;hosting su cui lavoriamo: capita spesso di trovare servizi che per sicurezza non abilitino <a href="http://it2.php.net/manual/it/ref.filesystem.php#ini.allow-url-fopen" title="i wrapper URL per fopen">i wrapper URL per fopen</a>, in modo da potere accedere       ad oggetti URL come file. In questo caso vediamo l&#8217;esempio con le funzioni curl:<br />
<code><br />
$ch = curl_init();<br />
$timeout = 5;<br />
curl_setopt ($ch, CURLOPT_URL, $request);<br />
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);<br />
$response = curl_exec($ch);<br />
curl_close($ch);<br />
</code></p>
<p>A questo punto entra in scena l&#8217;xml. Infatti per poter accedere ai dati ricavati dal feed <strong>dobbiamo convertire l&#8217;xml stesso in un oggetto su cui usare iteratori e proprietà degli array. </strong>Come? Le funzioni <strong><a href="http://it2.php.net/manual/it/ref.simplexml.php" title="SimpleXMLElement">SimpleXML</a> </strong>sono la risposta. Queste funzioni, che sono state introdotte con PHP5, permettono di trattare l&#8217;xml con un insieme di metodi studiati per accedere ai dati e per modificarne eventualmente i contenuti aggiungendone di altri.</p>
<p><code>$xml = new SimpleXMLElement($response);</code></p>
<p>Non resta che presentare ai lettori i contenuti del feed ricavati nei passaggi precedenti. L&#8217;accesso ai dati grazie al SimpleXML è un gioco da ragazzi: iterando sugli item contenuti in ogni channel facciamo l&#8217;echo del link e del titolo dell&#8217;articolo in questione&#8230;<br />
<code><br />
foreach ($xml-&gt;channel-&gt;item as $item) {<br />
echo "&lt;a href='" . $item-&gt;guid . "' style='color:#000;'&gt;" . $item-&gt;title . "&lt;/a&gt;&lt;br /&gt;";<br />
}<br />
</code></p>
<p>La presentazione del link è basilare, appositamente non sottoposta a stili particolari perchè non è questo l&#8217;obiettivo dell&#8217;articolo. Con poche specifiche allo <em>style</em> utilizzando i css si possono creare box adattabili ad ogni sito o blog integrandoli in modo perfetto al layout esistente.</p>
<p>Potete scaricare il codice completo dell&#8217;esempio da <strong><a href="http://gagblog.it/downloads/php5blog/xmlnews.txt" title="Xmlnews.php code">qui</a></strong>.</p>
<p><strong>CREDITS<br />
</strong>Le foto utilizzate nell’articolo sono state distribuite con licenza Creative Commons e prelevate da Flickr. Sono reperibili nel formato originale ai seguenti indirizzi:</p>
<ul>
<li><a href="http://www.flickr.com/photos/68242677@N00/1332714549/" title="http://www.flickr.com/photos/68242677@N00/1332714549/">http://www.flickr.com/photos/68242677@N00/1332714549/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/02/11/leggere-feed-rss-e-pubblicare-i-dati-xml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

