RSS 1.0 no seu site

Publicado por Mauricio 17/10/2004

[ Hits: 5.819 ]

Homepage: http://www.mbmaciel.com

Download rssficar.php




Código que gera o formato RSS para seu site, é compatível com vários programas leitores como : Evolution, Straw, Firefox e outros.

Instruções de uso no próprio código.

  



Esconder código-fonte

<?
// ***********************************************************
// RSSFICAR v 1.0
// gerador de páginas com o formato RSS 1.0
// Código criado por goran_johansson at yahoo dot com
// Modificado por Mauricio Maciel <mauricio@vendomicro.com.br>
// Fonte: http://www.php.net/manual/en/function.utf8-decode.php 
// ************************************************************
// Instruções de uso
// 
// A string "$url" é o endereço da página de onde vai ser a fonte dos dados e de onde será gerado o RSS, ela deve ser criada para este código funcionar. Ela pode ser uma página bem simples e não precisa ser mostrada aos visitantes do seu site.
// Esta página deve ter a tag <title> que vai ser o título do seu RSS, e cada notícia (ou post) deve ter o seguinte formato:
// <span class="rss:item"><a href="http://www.seusite.com.br/artigo.php?id=$id">$titulo</a>--$descricao</span> 
// Preste atenção ao "--" ou o script não vai funcionar direito!
// Veja este código funcionando em www.vendomicro.com.br/rssficar.php
// Qualquer dúvida ou sujestão para melhoria do código é bem vinda. Mande um email para mauricio@vendomicro.com.br
//
// Mude os dados abaixo para os seus. Não esqueça de criar a página para a string $url com o formato explicado acima!

$descsite="Boas novas - seu site de notícias";
$site="http://www.boasnovas.com.br";
$criador="Murilo Malandro";
$url="http://www.boasnovas.com.br/fonterss.php";
$copyright="Copyright © 2004 Good News";
  
// A partir daqui não é necessário mais modificações
  

function parse_html($descsite,$site,$criador,$url,$copyright){
  $itemregexp = "%rss:item *\" *>(.+?)</span>%is";
  $allowable_tags = "<A><B><BR><BLOCKQUOTE><CENTER><DD><DL><DT><HR><I><IMG><LI><OL><P><PRE><U><UL>";

  $urlparts = parse_url($url);
  if ($urlparts[path] == "") $url .= "/";

  if ($fp = @fopen($url, "r")) {
    while (!feof($fp)) {
      $data .= fgets($fp, 128);
    }
    fclose($fp);
  }
  
  $data =  smart_utf8_decode($data);

  eregi("<title>(.*)</title>", $data, $title);
  $channel_title = $title[1];

  $match_count = preg_match_all($itemregexp, $data, $items);
  $match_count = ($match_count > 25) ? 25 : $match_count;
  
  header("Content-Type: text/xml");

  $output .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n\n";
  $output .= "<rdf:RDF 
  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" 
  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 
  xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\" 
  xmlns:admin=\"http://webns.net/mvcb/\" 
  xmlns:cc=\"http://web.resource.org/cc/\" 
  xmlns=\"http://purl.org/rss/1.0/\">\n\n";
  $output .= "  <channel rdf:about=\"".$site."\">\n";
  $output .= "  <title>". htmlentities(strip_tags($channel_title)) ."</title>\n";
  $output .= "  <link>".$site."</link>\n";
  $output .= "  <description>".$descsite."</description>\n";
  $output .= "  <dc:language>pt_BR</dc:language>\n";
  $output .= "  <dc:creator>".$criador."</dc:creator>\n";
  $output .= "  <dc:rights>".$copyright."</dc:rights>\n";
  $output .= "  <admin:generatorAgent rdf:resource=\"".$site."\" />\n\n ";
  $output .= "<items>\n";
  $output .= "<rdf:Seq>";


  for ($x=0; $x< $match_count; $x++) {

    $desc = $items[1][$x];
    $item_url = get_link($desc, $url);
    $link = htmlentities($item_url);
    $output .= "  <rdf:li rdf:resource=\"". $link ."\" />\n";
  }
  
   $output .= " </rdf:Seq>\n";
   $output .= "</items>\n\n";
   $output .= "</channel>\n\n";
  
  for ($i=0; $i< $match_count; $i++) {

    $desc = $items[1][$i];
    $title = explode ("--", (strip_tags($desc)));
    $item_url = get_link($desc, $url);
    $link = htmlentities($item_url);
    $desc = str_replace('&', '&', trim(htmlentities(strip_tags($desc))));
    $output .= "  <item rdf:about=\"". $link ."\">\n";
    $output .= "  <title>". $title[0] ."</title>\n";
    $output .= "  <link>".$link."</link>\n";
    $output .= "  <description>". $title[1] ."</description>\n";
//  $output .= "  <dc:subject>Assunto</dc:subject>\n"; // todo
    $output .= "  </item>\n\n";
  }
    $output .= "  </rdf:RDF>\n";

  print $output;
}

function get_link($desc, $url) {
  if (stristr($desc, "href")) {
    $linkurl = stristr($desc, "href");
    $linkurl = substr($linkurl, strpos($linkurl, "\"")+1);
    $linkurl = substr($linkurl, 0, strpos($linkurl, "\""));
    $linkurl = trim($linkurl);
    return $linkurl;
  } else {
    return $url;
  }
}

function smart_utf8_decode($in_str){
  // Replace ? with a unique string
  $new_str = str_replace("?", "q0u0e0s0t0i0o0n", $in_str);
  // Try the utf8_decode
  $new_str=utf8_decode($in_str);
  // if it contains ? marks
  if (strpos($new_str,"?")>0) {
    // Something went wrong, set new_str to the original string.
    $new_str=$in_str;
  }else{
    // If not then all is well, put the ?-marks back where is belongs
    $new_str = str_replace("q0u0e0s0t0i0o0n", "?", $new_str);
  }
  return $new_str;
}

parse_html($descsite,$site,$criador,$url,$copyright);

?>



Scripts recomendados

Mega Sena Fake - PHP-GTK

Micro-script confirmar exclusão

Separa endereços sem formatação

Converte para maiúsculas a primeira letra de cada palavra, resolvendo o problema de acentos

Página inicial com dados e agenda com AJAX e MySQL


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts