Foros del Web » Programando para Internet » PHP »

Validar RSS...

Estas en el tema de Validar RSS... en el foro de PHP en Foros del Web. Tengo un programita para leer RSS hecho en PHP... el programa funciona perfecto, pero tiene 2 problemas: 1) cuando le cargas un rss que no ...
  #1 (permalink)  
Antiguo 01/08/2008, 13:00
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Validar RSS...

Tengo un programita para leer RSS hecho en PHP...

el programa funciona perfecto, pero tiene 2 problemas:

1) cuando le cargas un rss que no es valido no me carga la pagina...
2) cuando la pagina donde esta el rss da un error 500 por ejemplo o cualquier error de servidor no me carga la pagina...

lo que quiero es que si tiene un error el rss o el servidor de donde extrae que muestre el error...

algo asi:

if(!$error){
echo $rss;
}else{
echo $error[$tipo];
}
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 01/08/2008, 13:15
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Exclamación

encontre una clase para validar pero no me funciona ya probe de todo y todavia no encuentro el problema....

este es el codigo:
Código PHP:
<?php
include_once("class_xml_check/class_xml_check.php");

$myxml='<?xml version="1.0"?>
<foo>
 <data id="1">
   <name>pepe</name>
   <num>2</num>
 </data>
 <data>
   <name>foo</name>
   <num>5</num>
 </data>
</foo>'
;

$check = new XML_check();
//if($check->check_url("http://www.w3.org/")) {
if($check->check_string($myxml)) {
  print(
"XML is well-formed<br/>");
  print(
"<pre>");
  print(
"Elements      : ".$check->get_xml_elements()."<br/>");
  print(
"Attributes    : ".$check->get_xml_attributes()."<br/>");
  print(
"Size          : ".$check->get_xml_size()."<br/>");
  print(
"Text sections : ".$check->get_xml_text_sections()."<br/>");
  print(
"Text size     : ".$check->get_xml_text_size()."<br/>");
  print(
"</pre>");
} else {
  print(
"XML is not well-formed<br/>");
  print(
$check->get_full_error());
}
?>

help!

el codigo de class_xml_check.php es este:

Código PHP:
<?php
// ##################################################################################
// Title                     : Class XML_check
// Version                   : 1.0
// Author                    : Luis Argerich ([email protected])
// Last modification date    : 07-10-2002
// Description               : A class to check if documents are well formed
//                             XML reporting error msg,line and col if not or
//                             statistics about the document if it is well formed.
// ##################################################################################
// History: 
// 07-10-2002                : First version of this class.
// ##################################################################################
// To-Dos:
//
// ##################################################################################
// How to use it:
// Read the documentation in class_xml_check.html
// ##################################################################################

class XML_check {
  var 
$error_code;
  var 
$error_line;
  var 
$error_col;
  var 
$error_msg;
  var 
$size;
  var 
$elements;
  var 
$attributes;
  var 
$texts;
  var 
$text_size;
  
  function 
get_error_code() {
    return 
$this->error_code
  }
  
  function 
get_error_line() {
    return 
$this->error_line
  }
  
  function 
get_error_column() {
    return 
$this->error_col
  }
  
  function 
get_error_msg() {
    return 
$this->error_msg
  }
  
  function 
get_full_error() {
    return 
"Error: ".$this->error_msg." at line:".$this->error_line ." column:".$this->error_col;
  }
  
  function 
get_xml_size() {
    return 
$this->size
  }
  
  function 
get_xml_elements() {
    return 
$this->elements
  }
  
  function 
get_xml_attributes() {
    return 
$this->attributes
  }
  
  function 
get_xml_text_sections() {
    return 
$this->texts
  }
  
  function 
get_xml_text_size() {
    return 
$this->text_size
  }
  
  function 
check_url($url) {
    
$this->_init();
    
$this->parser xml_parser_create_ns("",'^');
    
xml_set_object($this->parser,&$this);
    
xml_parser_set_option($this->parserXML_OPTION_CASE_FOLDINGfalse);
    
xml_set_element_handler($this->parser"_startElement""_endElement");
    
xml_set_character_data_handler($this->parser,"_data");
    if (!(
$fp fopen($url"r"))) {
      
$this->error="Cannot open $rddl";
      return 
false;
    }
    while (
$data fread($fp4096)) {
      
$this->size+=strlen($data);
      if (!
xml_parse($this->parser$datafeof($fp))) {
        
$this->error_code xml_get_error_code($this->parser);
        
$this->error_line xml_get_current_line_number($this->parser);
        
$this->error_col xml_get_current_column_number($this->parser);
        
$this->error_msg xml_error_string($this->error_code);
        return 
false;                    
      }
    }
    
xml_parser_free($this->parser); 
    return 
true;
  }
  
  function 
_init() {
    
$this->error_code '';
    
$this->$error_line '';
    
$this->$error_col '';
    
$this->$error_msg '';
    
$this->$size 0;
    
$this->$elements 0;
    
$this->$attributes 0;
    
$this->$texts 0;
    
$this->$text_size 0
  }
  
  function 
_startElement($parser,$name,$attrs) {
    
$this->elements++;
    
$this->attributes+=count($attrs);
  }
  
  function 
_endElement($parser,$name) {
    
  }
  
  function 
_data($parser,$data) {
    
$this->texts++;
    
$this->text_size+=strlen($data);
  }
  
  function 
check_string($xml) {
    
$this->_init();
    
$this->parser xml_parser_create_ns("",'^');
    
xml_set_object($this->parser,&$this);
    
xml_parser_set_option($this->parserXML_OPTION_CASE_FOLDINGfalse);
    
xml_set_element_handler($this->parser"_startElement""_endElement");
    
xml_set_character_data_handler($this->parser,"_data");
    
$this->size+=strlen($xml);
    if (!
xml_parse($this->parser$xmltrue)) {
      
$this->error_code xml_get_error_code($this->parser);
      
$this->error_line xml_get_current_line_number($this->parser);
      
$this->error_col xml_get_current_column_number($this->parser);
      
$this->error_msg xml_error_string($this->error_code);
      return 
false;                    
    }
    
xml_parser_free($this->parser); 
    return 
true;
  } 
  
  
}



?>
Los errores que me tira son:

Código:
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of xml_set_object(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\wamp\www\sitio\class_xml_check\class_xml_check.php on line 75

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of xml_set_object(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\wamp\www\sitio\class_xml_check\class_xml_check.php on line 126

Fatal error: Cannot access empty property in C:\wamp\www\sitio\class_xml_check\class_xml_check.php on line 99
Tambien probe con otra clase pero tampoco funciona...

siempre me da que el feed no es valido, incluso cuando si lo es...

Codigo:

Código PHP:
<?php 

    
require_once("feed_validator.class.php"); 

    
$obj =& new feed_validator(); 
$url 'http://www.lanacion.com.py/rss.php';
    
//if ($obj->validate("http://yahoo.com/")) 
    
if ($obj->validate($url)){
        print 
"Feed OK...\n"
    }else{
        print 
"Not valid."
    }

?>
Documentacion y fuente:
http://www.phpclasses.org/browse/file/13510.html
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)

Última edición por j_aroche; 01/08/2008 a las 15:14
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 19:01.