codificação em leitor RSS

15 views
Skip to first unread message

Fabio Sanches

unread,
Dec 22, 2009, 8:24:16 AM12/22/09
to php-b...@googlegroups.com
to com um problema de codificação em um leitor de RSS aki.. tipo ja botei iso. utf-8 e nada.. 
na index eu so dei um include leitor.php mais nada.. 


esse é o leitor

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br">
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?
    require_once("RSS.class.php");
    //require_once("ATOM.class.php");
    $rss1 = new RSS("http://www.fundacentro.gov.br/rss/"); // Este o feed do manifesto
    //$rss2 = new ATOM("http://br-linux.org/linux/node/feed"); // Este o feed do br-linux
    // Exeto que o feed do br-linux nao e atom
    $rss1->dateFormat = "d/m/Y" ;// Definindo a formato de data, opcional
//    $rss1->template = "<li> ({date}) - <a href='{link}'> {title} </a> ";
$rss1->template = "<li> <a href='{link}' target='_Blank'> {title} </a> ";
    // Aqui eu defini o template para cada linha do leitor
    // Posso ainda definir o template direto ao chamar o leitor;
?>
</head>
<body>
<?=$rss1->leitor()?>
</body>
</html>


e esse o class.

<?

/**
 * Classe para leitura de RSS
 * Fornece o endereço e este recupera o conteudo já transformado
 * Pode-se passar um templete, para gerar o output e um formato padrao para datas
 */
class RSS {

/**
* Guarda o titulo do RSS
*/
public $titulo ;
/**
* O Link para pagina pertencente ao RSS
*/
public $link ;
/**
* Os itens(posts ) do rss
*/
public $itens ;
/**
* Define o template, para cada linha(post) do output.
* Aceita: {date} , {title} , {link}
*/
public $template ;
/**
* Formato padrão para datas, como na funcão date() do php
*/
public $dateFormat = "d/m/Y" ;


/**
* Cria o RSS, recebe o caminho para o feed
*/
    function RSS($rss){
        // $a deve ser o caminho para o rss
        // Primeiro armazenamos o xml

        $info = simplexml_load_file($rss); // Esta funcao carrega o arquivo xml em uma variavel
        $this->title = $info->channel->title; // Titulo do RSS
        $this->link = $info->channel->link ;    // Link para a pagina
        $this->itens =  $info->channel->item; // Conteudo do RSS
    }


/**
    
    /**
     * Gera o html do leitor, recebe o template e possivel limite de posts
     */
   function leitor($template=null,$limit=10) {
        // Funcao que le o rss e gera um output baseado em um template
        // $limit e um argumento opcional para o maximo de links a serem chamados
        
        if(isset($template)) 
         $this->template = $template ;
        
        
        $itens = $this->itens ;
        for($i = 0; $i < sizeof($itens) AND $i < $limit; $i++) { // Loop pelos itens(posts) até o limite
        
            $link = $itens[$i]->link ; // Link deste post
            
        
            if(strlen($itens[$i]->datePosted) > 1) {
           $data = $this->formatDate($itens[$i]->datePosted); // data de publicação            
            } else {
           $data = $this->formatDate($itens[$i]->pubDate); // data de publicação
            }
            
            $titulo1 = $itens[$i]->title ; // Titulo do item
            $titulo= substr($titulo1, 0, 60)."...";  // abcd
$temp = $this->template ; // Template, temporario
            
            $temp = str_replace("{date}",$data,$temp); // Aplica ao template
            $temp = str_replace("{title}",$titulo,$temp);
            $temp = str_replace("{link}",$link,$temp);
            
            $output .= $temp;
        }
        $output .= "</dl></div></div>" ;
        //return $output ; // Ele retorna o codigo
        return utf8_decode($output);
    }

/**
* Alias to leitor
*/
function reader($template=null,$limit=5) {
return utf8_decode($this->leitor($template,$limit));
}
/**
* Formata as datas
*/
    function formatDate($date) { 
     $return = $date ;
     if(is_int($date)) {
     $return = date($this->date_format,$date) ; // Formata a data
    
     return $return ;
    }

}
?>

maiquel krolikowski leonel

unread,
Dec 22, 2009, 8:38:13 AM12/22/09
to php-b...@googlegroups.com
Deveria estar nas regras do grupo que códigos somente no pasbin ou similares... ou , caso a internet seja bloqueada, numa fonte monoespaçada como a Corrier senão não se entende nada!

2009/12/22 Fabio Sanches <fabios...@gmail.com>

--

Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.



--
Maiquel Leonel
web developer
http://www.maiquelleonel.com.br
mai...@maiquelleonel.com.br / skywi...@gmail.com

Fabio Sanches

unread,
Dec 22, 2009, 8:44:30 AM12/22/09
to php-b...@googlegroups.com
kra tipo.. se eu colocar iso..  funciona.. e sinceramente.. nao entendi nada q vc falou.. kkkkk

2009/12/22 maiquel krolikowski leonel <skywi...@gmail.com>

felipe moraes

unread,
Dec 22, 2009, 12:33:37 PM12/22/09
to php-b...@googlegroups.com
include leitor.php

todos os arquivos, sem excessão, devem estar com encoding UTF-8 sem BOM

Fabio Sanches

unread,
Dec 22, 2009, 1:05:26 PM12/22/09
to php-b...@googlegroups.com
como assim UTF-8 sem BOM??

2009/12/22 felipe moraes <feli...@gmail.com>
include leitor.php

todos os arquivos, sem excessão, devem estar com encoding UTF-8 sem BOM

--

felipe moraes

unread,
Dec 22, 2009, 1:35:13 PM12/22/09
to php-b...@googlegroups.com
Editor -> Menu -> Arquivo
Salvar Como ...
 - Nome
 - Extensão
 - Codificação : UTF-8 sem BOM

Algum arquivo que vc está incluindo deve estar como ANSI

Fabio Sanches

unread,
Dec 23, 2009, 4:19:58 AM12/23/09
to php-b...@googlegroups.com
no dreanweaver tem essa opção? cs3

2009/12/22 felipe moraes <feli...@gmail.com>

--

Fabio Sanches

unread,
Dec 23, 2009, 6:31:15 AM12/23/09
to php-b...@googlegroups.com
kra.. ja fiz isso tbn usando o rapidphp.. coloquei utf8 em todos os meus arquivos no meta
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
corrigi o meu banco de dados todo para utf8_unicode_ci e NADA... so funciona se eu colocar a codificação ISO o UTF ele fica doidao a acentuação aki

2009/12/23 Fabio Sanches <fabios...@gmail.com>

Fabio Sanches

unread,
Dec 23, 2009, 6:40:01 AM12/23/09
to php-b...@googlegroups.com
so funciona no ISO-8859-1

2009/12/23 Fabio Sanches <fabios...@gmail.com>

Fabio Sanches

unread,
Dec 23, 2009, 7:38:37 AM12/23/09
to php-b...@googlegroups.com
por exemplo

tenho por exemplo esse arquivo [code] <html xmlns="http://www.w3.org/1999/xhtml"> <head> <?PHP include "charset.php"; ?> <title>SALUBRE - Assessoria em Segurança Ocupacional</title> <link href="estilo.css" rel="stylesheet" type="text/css" /> </head> <body background="imagens/bg_site.png"> <table width="775" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td align="center"> <? include "topo.php"; ?> </td> </tr> <tr> <td align="center"> <table width="100%" cellspacing="4" cellpadding="4"> <tr> <td width="20%" align="center" valign="top"><img src="imagens/img_quemsomos.jpg" width="97" height="171" /></td> <td width="80%" class="txtaboutus" valign="top"> <? include("conect.php"); $conn = mysql_connect("$srv","$usr","$pass"); $db = mysql_select_db("$dbase",$conn); $sql=mysql_query("select texto from quemsomos where id=1"); $texto=mysql_result($sql,0); echo $texto; ?> </td> </tr> </table> </td> </tr> <tr> <td align="center"><? include "rodape.php"; ?> </td> </tr> </table> </body> </html> [/code] q me mostra o seguinte retorno � um prazer receb�-lo em nosso site. Sentimos-nos ainda mais honrados com seu interesse em nos conhecer melhor. O nosso trabalho � jornal�stico, especializado em divulga��o cient�fica e tecnol�gica. Nosso objetivo b�sico � o de prover informa��es nas �reas cobertas pelos temas Inova��o Tecnol�gica, Ci�ncia e Tecnologia e Pesquisa e Desenvolvimento. Toda e qualquer informa��o que possa vir, num futuro pr�ximo ou n�o t�o pr�ximo, resultar em aprimoramentos tecnol�gicos. Aprimoramentos que vir�o modernizar nossos parques fabris e auxiliar em nosso desenvolvimento econ�mico. A quase totalidade das nossas not�cias origina-se de peri�dicos cient�ficos revisados pelos pares - o que significa que, quando um cientista divulga uma descoberta, outros colegas seus j� analisaram sua pesquisa e concordaram com a sua precis�o, corre��o e correta avalia��o dos resultados. Em todos esses casos, citamos a bibliografia completa do artigo cient�fico original, logo abaixo de cada mat�ria. O Site Inova��o Tecnol�gica � o maior site de divulga��o cient�fica em l�ngua portuguesa, no ar desde 1999. Conquistamos esse posto acreditando que o conhecimento cient�fico pode ser levado ao p�blico em linguagem f�cil, sem perder a precis�o. E � com este mesmo esp�rito que esperamos continuar trazendo aos leitores de l�ngua portuguesa tudo o que acontece na fronteira do conhecimento. sendo q tem outros arquivos q tao funcionando perfeitamente

2009/12/23 Fabio Sanches <fabios...@gmail.com>

felipe moraes

unread,
Dec 23, 2009, 8:01:53 AM12/23/09
to php-b...@googlegroups.com
experimenta mudar para

echo utf8_decode($texto);

onde tem ...

echo $texto;

é simples utf8_encode -> uf8_decode ... hehe

deve funcionar :D

Fabio Sanches

unread,
Dec 23, 2009, 8:21:32 AM12/23/09
to php-b...@googlegroups.com
aagora ficou assim

?um prazer receb?o em nosso site. Sentimos-nos ainda mais honrados com seu interesse em nos conhecer melhor. O nosso trabalho ?ornal?ico, especializado em divulga? cient?ca e tecnol?a. Nosso objetivo b?co ? de prover informa?s nas ?as cobertas pelos temas Inova? Tecnol?a, Ci?ia e Tecnologia e Pesquisa e Desenvolvimento. Toda e qualquer informa? que possa vir, num futuro pr?o ou n?t?pr?o, resultar em aprimoramentos tecnol?os. Aprimoramentos que vir?modernizar nossos parques fabris e auxiliar em nosso desenvolvimento econ?o. A quase totalidade das nossas not?as origina-se de peri?os cient?cos revisados pelos pares - o que significa que, quando um cientista divulga uma descoberta, outros colegas seus j?nalisaram sua pesquisa e concordaram com a sua precis? corre? e correta avalia? dos resultados. Em todos esses casos, citamos a bibliografia completa do artigo cient?co original, logo abaixo de cada mat?a. O Site Inova? Tecnol?a ? maior site de divulga? cient?ca em l?ua portuguesa, no ar desde 1999. Conquistamos esse posto acreditando que o conhecimento cient?co pode ser levado ao p?co em linguagem f?l, sem perder a precis? E ?om este mesmo esp?to que esperamos continuar trazendo aos leitores de l?ua portuguesa tudo o que acontece na fronteira do conhecimento.

so mudou o simbolo.. kkkkk

2009/12/23 felipe moraes <feli...@gmail.com>

--

felipe moraes

unread,
Dec 23, 2009, 8:43:47 AM12/23/09
to php-b...@googlegroups.com
O problema está entre o computador e a cadeira ... brincadeirinha .. kkkkkkkkkk

 em leitor() vc faz isso ..
        return utf8_decode($output);
 
em reader() vc faz isso ..
return utf8_decode($this->leitor($template,$limit));

ou seja .. se vc estiver usando reader() .. vai decodificar 2x .. bug :D

se isto não resolver .. observe seu "bando de dados" no banco de dados hehehe .. devem estar armazenados com codificação errada .. acho que mudar a codificação da tabela e dos campos não muda o valor armazenado ..

O melhor a se fazer nesses casos .. é parar e revisar tudo ..

felipe moraes

unread,
Dec 23, 2009, 8:46:03 AM12/23/09
to php-b...@googlegroups.com
vo olhar esse xml melhor .. espera .. peguei o assunto pela metade

felipe moraes

unread,
Dec 23, 2009, 9:28:54 AM12/23/09
to php-b...@googlegroups.com
Pronto .. esse script funciona perfeitamente ..

<?php

$xml = simplexml_load_file("http://www.fundacentro.gov.br/rss/");

$items = $xml->channel->item;

foreach( $items as $noticia)
{
echo utf8_decode($noticia->title) . "<br />";
echo utf8_decode($noticia->link) . "<br />";
echo utf8_decode($noticia->description) . "<br />";
}

?>

Agora basta vc adaptar ao seu caso ..

Ninetails - Carlos Kazuo

unread,
Dec 23, 2009, 9:40:33 AM12/23/09
to php-b...@googlegroups.com
adiciona no php

header('Content-Type: application/xml; charset=ISO-8859-1');

--------------------------------------------------
/**
* @author Ninetails - Carlos Kazuo <ninetails.nine [at] gmail.com>
*/

2009/12/23 felipe moraes <feli...@gmail.com>:

Fabio Sanches

unread,
Dec 23, 2009, 10:23:08 AM12/23/09
to php-b...@googlegroups.com
o unico formato q resolveu

<meta http-equiv="content-type" content="text/html; charset=windows-1252" />



2009/12/23 Ninetails - Carlos Kazuo <ninetai...@gmail.com>

felipe moraes

unread,
Dec 23, 2009, 3:49:20 PM12/23/09
to php-b...@googlegroups.com
hein ???

o código q postei funciona perfeitamente em UTF-8 .. :D .. eu testei ...

algum *.php seu deve tá bichado :D kkkk

RUY FILHO

unread,
Dec 23, 2009, 3:32:47 PM12/23/09
to php-brasil
só impelentando se vc quiser limitar a qtd de linhas q vão ser
expostas e meu código tá sem a descrição mas é só incluir o $item->-
>description.

<ul>
<?php
$linha = 1;
$xml = simplexml_load_file('ARQUIVO XML');
foreach($xml->channel->item as $item){

$chamada = "<li>" . "<a href='" . $item->link . "' target='blank' >" .
utf8_decode($item->title) . "</li>";

if($linha <= 7){ //NO CASO ESTOU LIMITANDO EM 7
echo $chamada;
$linha = $linha + 1;
}

}
?>
</ul>

Como o Carlos falo9u n esquece de por o


header('Content-Type: application/xml; charset=ISO-8859-1');

no começo da página.


Ninetails - Carlos Kazuo

unread,
Dec 23, 2009, 10:23:34 PM12/23/09
to php-b...@googlegroups.com
opa na verdade eu acho que seria:
header('Content-Type: application/xml; charset=utf-8');

opa desculpa


--------------------------------------------------
/**
* @author Ninetails - Carlos Kazuo <ninetails.nine [at] gmail.com>
*/

2009/12/23 RUY FILHO <ruynev...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages