class.rss.php
codice:
<?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;
}
}
}
?>
rss.php
codice:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data passata
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// sempre modificato
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
include "db.php";
include('./class.rss.php');
function xmlentities($string, $quote_style=ENT_COMPAT)
{
$trans = get_html_translation_table(HTML_ENTITIES, $quote_style);
foreach ($trans as $key => $value)
$trans[$key] = '&#'.ord($key).';';
return strtr($string, $trans);
}
$r = new MakeRSS('Sito.it', 'http://www.sito.it', 'Sito');
$query = "SELECT * FROM News ORDER BY ID DESC LIMIT 0,10";
$result = mysql_query($query, $db);
while ($rows = mysql_fetch_array($result)) {
$id = $rows["ID"];
$titolo = $rows["Titolo"];
$titolo = str_replace(""","''",$titolo);
$abs = $rows["Descrizione"];
$abs = str_replace(""","''",$abs);
$titolo = xmlentities($titolo);
$abs = xmlentities($abs);
$r->AddArticle("$titolo - $abs", "http://www.sito.it/news/news.php?News=$id", $abs, "Sito.it");
}
$r->Output();
?>
Perchè con IE mi da errore?
Impossibile visualizzare la pagina XML
Impossibile visualizzare l'input XML tramite il foglio di stile XSL. Correggere l'errore, quindi fare clic su Aggiorna, oppure riprovare in un momento successivo.
--------------------------------------------------------------------------------
Carattere non valido nel contenuto di testo. Errore durante l'elaborazione della risorsa "http://www.ruotanti.it/include/rs...
<title>Titolo news - PrimaLetteraDescrizione