pc-facile.com |
http://www.pc-facile.com/guide/guida_creare_rss/236.htm |
Generale: Dylan666 05 Settembre 05 @ 23:01 pm |
3. Esempio di feed RSS con PHP Abbiamo detto che si possono creare feed RSS a partire da una pagina HTML (scraping) vediamo come.Per prima cosa è utile creare una classe per creare un feed RSS inserendo i parametri obbligatori o più utilizzati. Questa è una delle tante disponibili sul web e mi è sembrata la migliore ognuno lo adatterà alle sue esigenze. Verrà salvata come rss.php e la ritroveremo nell’include del prossimo file che chiameremo output_rss.php. Nome del file: rss.php <?php class MakeRSS{ var $Articles = array(); // Channel info var $title = ''; var $link = ''; var $description = ''; var $optional = array(); var $image = array('url' => '', 'title' => '', 'link' => '', 'description' => '', 'w' => 0, 'h' => 0); function MakeRSS($title, $link, $description, $optional = ''){ $this->title = $title; $this->link = $link; $this->description = $description; if( is_array($optional) and count($optional) ){ $this->optional = $optional; } } function AddOptional($key, $value){ $this->optional[$key] = $value; } function AddImage($title, $url, $link, $description = ''){ $this->image['title'] = $title; $this->image['url'] = $url; $this->image['link'] = $link; $this->image['description'] = $description; if( $tmp = @getimagesize($url) ){ $this->image['w'] = ($tmp[0] > 144) ? 144 : $tmp[0]; $this->image['h'] = ($tmp[1] > 400) ? 400 : $tmp[1]; } } function AddArticle($title, $link, $description, $author, $optional = ''){ $i = array_push($this->Articles, array('title' => $title, 'link' => $link, 'description' => $description, 'author' => $author)); if( is_array($optional) and count($optional) ){ --$i; while( list($k, $v) = each($optional) ){ $this->Articles[$i][$k] = $v; } } } function Output($save = false, $path = ''){ $out = '<?xml version="1.0"?>' . "\n" . '<rss version="2.0">' . "\n" . '<channel>' . "\n"; $out .= "<title>$this->title</title>\n" . "<link>$this->link</link>\n" . "<description>$this->description</description>\n"; //Channel optionals if( is_array($this->optional) and count($this->optional) ){ while( list($k, $v) = each($this->optional) ){ $out .= "<$k>$v</$k>\n"; } } //Image if( $this->image['title'] and $this->image['url'] and $this->image['link'] ){ $out .= "<image>\n" . "<title>" . $this->image['title'] . "</title>\n" . "<url>" . $this->image['url'] . "</url>\n" . "<link>" . $this->image['link'] . "</link>\n"; if( $this->image['description'] ){ $out .= "<description>" . $this->image['description'] . "</description>\n"; } if( $this->image['w'] and $this->image['h'] ){ $out .= "<width>" . $this->image['w'] . "</width>\n" . "<height>" . $this->image['h'] . "</height>\n"; } $out .= "</image>\n"; } //Articles for( $i = 0, $c = count($this->Articles); $i < $c; $i++ ){ $out .= "<item>\n" . "<title>" . $this->Articles[$i]['title'] . "</title>\n" . "<link>" . $this->Articles[$i]['link'] . "</link>\n" . "<description>" . $this->Articles[$i]['description'] . "</description>\n" . "<author>" . $this->Articles[$i]['author'] . "</author>\n"; if( count($this->Articles[$i]) > 4 ){ while( list($k, $v) = each($optional) ){ if( !in_array($k, array('title', 'link', 'description', 'author')) ){ $out .= "<$k>$v</$k>\n"; } } } $out .= "</item>\n"; } $out .= "</channel>\n</rss>"; // True output if( !$save or !$path ){ header("Content-type: application/xml"); echo $out; return true; } else{ $fh = fopen($path, 'w'); if( $fh ){ fwrite($fh, $out); fclose($fh); return true; } return false; } } } ?> Nome del file: output_rss.php include('/rss.php'); $r = new MakeRSS('Feed RSS in php, 'http://www.pc-facile.com/guide', 'GUIDE’); $r->AddArticle('Guide', 'http://www.pc-facile.com/guide/guide.php?id=1', 'guida all’installazione di reti miste', 'Klizya'); $r->Output(); Il feed RSS creato sarà: <?xml version="1.0"?> <rss version="2.0"> <channel> <title>Feed RSS in php</title> <link>http:// www.pc-facile.com/guide </link> <description> GUIDE </description> <item> <title>Guide</title> <link>http:// http://www.pc-facile.com/guide/guide.php?id=1</link> <description>guida all’installazione di reti miste</description> <author>klizya</author> </item> < </channel> </rss> |
© 2000-2024 pc-facile.com