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("&quot;","''",$titolo);
$abs = $rows["Descrizione"];
$abs = str_replace("&quot;","''",$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