Foros del Web » Programando para Internet » PHP »

Problema de encoding con parser XML - PHP

Estas en el tema de Problema de encoding con parser XML - PHP en el foro de PHP en Foros del Web. Bueno, estoy usando un XML parser, para mostrar noticias actualizadas en mi pagina, especificamente el de www.stronghtml.com . EL problema es q los feeds aparecen ...
  #1 (permalink)  
Antiguo 26/04/2008, 12:05
Avatar de _eNGeLs_  
Fecha de Ingreso: noviembre-2007
Ubicación: CDE, Paraguay
Mensajes: 278
Antigüedad: 18 años, 10 meses
Puntos: 4
Problema de encoding con parser XML - PHP

Bueno, estoy usando un XML parser, para mostrar noticias actualizadas en mi pagina, especificamente el de www.stronghtml.com .
EL problema es q los feeds aparecen con caracteres raros óé.
Este es el codigo del parser y nose donde cambiar lo del encoding..

Código PHP:
<?php
$srp_initem 
= false;
$srp_itemidx = 1;
$srp_maxitems="";
$srp_tag = "";
$srp_title = "";
$srp_desc = "";
$srp_url = "";
$srp_parsedhtml="";
function 
startElement($parser, $name, $attrs) {
 global 
$srp_initem, $srp_tag, $srp_title, $srp_desc, $srp_url;
 if (
$srp_initem) {
 
$srp_tag = $name;
 } elseif (
$name == "ITEM") {
 
$srp_initem = true;
 }
}
function 
endElement($parser, $name) {
 global 
$srp_initem, $srp_tag, $srp_title, $srp_desc, $srp_url, $srp_parsedhtml, $srp_itemidx, $srp_maxitems;
 if (
$name == "ITEM") {
 if (
$srp_maxitems=="" || $srp_itemidx<=$srp_maxitems) {
 
$srp_parsedhtml.="<tr>
  <td align=\"center\" class=\"strongrss_title\"><a href=\""
.trim($srp_url)."\">".htmlspecialchars(trim($srp_title))."</a>
  </td>
</tr>
<tr>
  <td class=\"strongrss_desc\">"
.htmlspecialchars(trim($srp_desc))."
  </td>
</tr>"
;
 }
 
$srp_title = "";
 
$srp_desc = "";
 
$srp_url = "";
 
$srp_initem = false;
 
$srp_itemidx++;
 }
}
function 
characterData($parser, $data) {
 global 
$srp_initem, $srp_tag, $srp_title, $srp_desc, $srp_url;
 if (
$srp_initem) {
 switch (
$srp_tag) {
 case 
"TITLE":
 
$srp_title .= $data;
 break;
 case 
"DESCRIPTION":
 
$srp_desc .= $data;
 break;
 case 
"LINK":
 
$srp_url .= $data;
 break;
 }
 }
}
function 
strongrss($RSSHOST,$RSSFILE,$CACHEFILE,$CACHEEXPAFTER,$MAXITEMS) {
 global 
$srp_parsedhtml, $srp_itemidx, $srp_maxitems;
 
$srp_parsedhtml="";
 
$srp_itemidx=1;
 
$srp_maxitems=$MAXITEMS;
 if (
$CACHEFILE!="" && (!file_exists($CACHEFILE) || time()-filemtime($CACHEFILE)>$CACHEEXPAFTER)) {
 
$fp = fsockopen($RSSHOST, 80, $errno, $errstr, 12);
 if (!
$fp) {
 echo 
"Error reading RSS data: $errstr ($errno)<br />\n";
 } else {
 
$header_done=false;
 
$dataheader=array();
 
$datacontent="";
 
fputs($fp, "GET ".$RSSFILE." HTTP/1.0\r\nHost: ".$RSSHOST."\r\nReferer: http://www.stronghtml.com/tools/rssphp/\r\nUser-Agent: Strong RSS-PHP/1.0\r\n\r\n");
 
$line = fgets ($fp, 128);
 
$dataheader["status"] = $line;
 while (!
feof($fp)) {
 
$line = fgets ($fp,128);
 if(
$header_done) {
 
$datacontent.=$line;
 } else {
 if(
$line=="\r\n") {
 
$header_done=true;
 } else {
 
$data = explode(": ",$line);
 
$dataheader[$data[0]] = $data[1];
 }
 }
 }
 
fclose($fp);
 
$xml_declaration_count = substr_count(strtolower(substr($datacontent,0,10)),"<?xml");
 if(
$xml_declaration_count == "0") {
 
$datacontent = "<?xml version=\"1.0\" ?\>".$datacontent;
 }
 
$xml_parser = xml_parser_create();
 
xml_set_element_handler($xml_parser, "startElement", "endElement");
 
xml_set_character_data_handler($xml_parser, "characterData");
 
xml_parse($xml_parser, $datacontent)
 or 
printf("XML error: %s at line %d",
 
xml_error_string(xml_get_error_code($xml_parser)),
 
xml_get_current_line_number($xml_parser));
 
xml_parser_free($xml_parser);
 }
 
$fp = fopen($CACHEFILE, "w");
 
flock($fp, 1);
 
fputs($fp, $srp_parsedhtml);
 
flock($fp, 3);
 
fclose($fp);
 } else {
 
$fp = fopen($CACHEFILE, "r");
 while (!
feof($fp))
 
$srp_parsedhtml.=fgets($fp,128);
 
fclose($fp);
 }
 print 
"<!-- Created with <STRONG><RSS> -->
<!-- http://www.stronghtml.com/ -->
<div class=\"strongrss\">
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" width=\"100%\">
"
.$srp_parsedhtml."
</table>
</div>"
;
}
?>
alguien me ayuda?
salu2!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:42.