Gera um arquivo XML
Conforme artigo e arquivos de Júlio César Martini - Colunista PHP (www.imasters.com.br) criado em 29/11/2003. Refiz o script que ficou assim:
<?php
/***********************************************************************************
SCRIPT......: Gera um arquivo XML
BY .........: rogarfil.com.br
DATA .......: 26/11/2014
/***********************************************************************************/
//CONECTA AO BANCO DE DADOS
$conn = @mysql_connect("127.0.0.1", "root","") or die("ERRO NA CONEXÃO");
//SELECIONA A BASE DE DADOS A SER UTILIZADA
$db = @mysql_select_db("rgf", $conn) or die("ERRO NA SELEÇÃO DA BASE DE DADOS");
/*--- INÍCIO DE CONVERÇÃO DE STRING PARA URL AMIGÁVEL ---*/
function corrOrto($string){
$table = array(
'Š'=>'S', 'š'=>'s', 'Ð'=>'D', 'Ž'=>'Z', 'ž'=>'z',
'C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c', 'À'=>'A',
'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A',
'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E',
'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I',
'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O',
'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U',
'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a',
'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a',
'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e',
'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i',
'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o',
'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u',
'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y',
'R'=>'R', 'r'=>'r');
// Traduz os caracteres em $string, baseado no vetor $table
$string = strtr($string, $table);
// converte para minúsculo
$string = strtolower($string);
// remove caracteres indesejáveis (que não estão no padrão)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
// Remove múltiplas ocorrências de hífens ou espaços
$string = preg_replace("/[\s-]+/", " ", $string);
// Transforma espaços e underscores em hífens
$string = preg_replace("/[\s_]/", "-", $string);
// retorna a string
return $string;
}
/*--- FIM DE CONVERÇÃO DE STRING PARA URL AMIGÁVEL ---*/
include "../scripts/limita_palavras.php";
/* Fazemos a consulta e a ordenamos por post para mostrar sempre o último */
$sql = @mysql_query("SELECT * FROM posts_rgf ORDER BY id DESC") or die("ERRO NO SQL");
/* TOTAL DE LINHAS AFETADAS PELA CONSULTA */
$row = mysql_num_rows($sql);
if($row > 0) {
//ARQUIVO
$arquivo = "feed.xml";
//ABRE O ARQUIVO(SE NÃO EXISTIR, CRIA)
$ponteiro = fopen($arquivo, "w");
//ESCREVE NO ARQUIVO XML
fwrite($ponteiro, "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n");
fwrite($ponteiro, "<rss version=\"2.0\">\r\n");
fwrite($ponteiro, "<channel>\r\n");
fwrite($ponteiro, "<title>Assine nosso FEEDS</title>\r\n");
fwrite($ponteiro, "<description>Notícias pontuais do site!</description>\r\n");
fwrite($ponteiro, "<link>[http://www.rogarfil.com.br\r\n](http://www.rogarfil.com.br)");
fwrite($ponteiro, "<language>pt-br</language>\r\n");
while ($dados = mysql_fetch_array ($sql)){
extract($dados);
/* MONTA AS TAGS DO XML */
$conteudo = "<item>\r\n";
$conteudo .= "<title>".corrOrto($titulo)."</title>\r\n";
//$conteudo .= "<link>[http://127.0.0.1/www/rogarfil/exibir/](http://127.0.0.1/www/rogarfil/exibir/)".$dados['id']."/".$dados['categoria']."/".$dados['titulo']."</link>\r\n";
/* [http://validator.w3.org/](http://validator.w3.org/) */
1. $conteudo .= "<pubDate>$data</pubDate>\r\n"; (pubDate must be an RFC-822 date-time: 19/08/2013)
2. $conteudo .= "<autor>$autor</autor>\r\n"; (Undefined item element: autor)
Somente estas duas linhas estão dando erro, alguém pode dar uma luz. Já fui no endereço: [http://br2.php.net/manual/en/function.date.php,](http://br2.php.net/manual/en/function.date.php,) perguntando sobre rfc-822 date?
PS.: Para saber a página "XML" é gerada normalmente. Com todos os dados menos a data e o autor.
$conteudo .= "<description><![CDATA[".str_truncate($texto, 300, 0)."...]]></description>\r\n";
$conteudo .= "</item>\r\n";
/* ESCREVE NO ARQUIVO */
fwrite($ponteiro, $conteudo);
}/* FECHA FOR */
/* FECHA A TAG AGENDA */
fwrite($ponteiro, "</channel>\r\n");
fwrite($ponteiro, "</rss>");
/* FECHA O ARQUIVO */
fclose($ponteiro);
/* MENSAGEM */
echo "<script>alert('XML CRIADO');location.href='../.';</script>";
mysql_close($conexao);
}/* FECHA IF($row) */
?>
Estou tendo problemas de reconhecimento de data e autor, nas linhas 86 e 87, quem puder ajudar, por favor.
Abraços.
Discussão (1)
Carregando comentários...