Erro de acentuação e caracter rss ..
Pessoal,
Estou com esse código para puxar um rss, porem o título eu consigo puxar sem nenhum erro, mas a descrição não vem corretamente, sendo que no xml está tudo certo.
Por exemplo
São Paulo - está assim no xml
SÃO PAULO - assim quando eu puxo através do código.
Segue o código abaixo:
<?php
function untag($string, $tag){
$tmpval = array();
$preg = "|<$tag>(.*?)</$tag>|s";
preg_match_all($preg, $string, $tags);
foreach ($tags[1] as $tmpcont){
$tmpval[] = $tmpcont;
}
return $tmpval;
}
//--------------------------------------------------------------------------------------------------------
// tribunal de justiça rio grande do sul
$feed = 'http://info.abril.com.br/aberto/infonews/rssnews.xml';
ini_set('allow_url_fopen', true);
$fp = fopen($feed, 'r');
$xml = '';
while (!feof($fp)) {
$xml .= fread($fp, 128);
}
fclose($fp);
$items = untag($xml, 'item');
$html = '<p>';
//foreach ($items as $item) {
//for($i=0;$i <= 5;$i++){
$count = 0;
foreach ($items as $item) {
if($count <= 5){
$title = untag($item, 'title');
$descricao = untag($item, 'description');
$link = untag($item, 'link');
$html .= '<a href="' . $link[0] . '">' . $title[0] . "</a><br />\n";
$html .= ''.$descricao[0].'<br><br>';
}
$count = $count + 1;
}
$html .= '</p>';
echo $html;
?>
Já tentei de tudo pesquisei não encontrei nada alguém tem alguma idéia de como resolver isso?
Todas idéias serão bem vindas.
Obrigado.
Estou com esse código para puxar um rss, porem o título eu consigo puxar sem nenhum erro, mas a descrição não vem corretamente, sendo que no xml está tudo certo.
Por exemplo
São Paulo - está assim no xml
SÃO PAULO - assim quando eu puxo através do código.
Segue o código abaixo:
<?php
function untag($string, $tag){
$tmpval = array();
$preg = "|<$tag>(.*?)</$tag>|s";
preg_match_all($preg, $string, $tags);
foreach ($tags[1] as $tmpcont){
$tmpval[] = $tmpcont;
}
return $tmpval;
}
//--------------------------------------------------------------------------------------------------------
// tribunal de justiça rio grande do sul
$feed = 'http://info.abril.com.br/aberto/infonews/rssnews.xml';
ini_set('allow_url_fopen', true);
$fp = fopen($feed, 'r');
$xml = '';
while (!feof($fp)) {
$xml .= fread($fp, 128);
}
fclose($fp);
$items = untag($xml, 'item');
$html = '<p>';
//foreach ($items as $item) {
//for($i=0;$i <= 5;$i++){
$count = 0;
foreach ($items as $item) {
if($count <= 5){
$title = untag($item, 'title');
$descricao = untag($item, 'description');
$link = untag($item, 'link');
$html .= '<a href="' . $link[0] . '">' . $title[0] . "</a><br />\n";
$html .= ''.$descricao[0].'<br><br>';
}
$count = $count + 1;
}
$html .= '</p>';
echo $html;
?>
Já tentei de tudo pesquisei não encontrei nada alguém tem alguma idéia de como resolver isso?
Todas idéias serão bem vindas.
Obrigado.
comentários (0)
suspender
Lista de Respostas:
09/06/2010 9:45am
(~14 anos atrás)
(~14 anos atrás)
Amigo, não há erro algum.
O XML está com os acentos em seu formato de entidades HTML onde
ã = ã por exemplo.
Para exibir corretamente no HTML basta imprimir do jeito que está.
Para retornar uma entidade a seu formato use a função
html_entity_decode()
http://php.net/html_entity_decode
Outra coisa, seria mais simples se vc usa-se SimpleXML .
http://php.net/simplexml
O XML está com os acentos em seu formato de entidades HTML onde
ã = ã por exemplo.
Para exibir corretamente no HTML basta imprimir do jeito que está.
Para retornar uma entidade a seu formato use a função
html_entity_decode()
http://php.net/html_entity_decode
Outra coisa, seria mais simples se vc usa-se SimpleXML .
http://php.net/simplexml