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: 16 años, 4 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($RSSHOST80$errno$errstr12);
 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 ($fp128);
 
$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($fp1);
 
fputs($fp$srp_parsedhtml);
 
flock($fp3);
 
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 16:03.