Foros del Web » Programando para Internet » PHP »

ejecutar más de una vez el script con distinta variable

Estas en el tema de ejecutar más de una vez el script con distinta variable en el foro de PHP en Foros del Web. Hola a todos, tengo un script que parsea archivos xml y los muestra en html, este script parsea el archivo correspondiente definiendo su url como ...
  #1 (permalink)  
Antiguo 17/01/2006, 22:14
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
ejecutar más de una vez el script con distinta variable

Hola a todos,

tengo un script que parsea archivos xml y los muestra en html, este script parsea el archivo correspondiente definiendo su url como $file.

es decir funciona de este modo:

Código PHP:
<?
$file 
"http://www.dominio.com/archivo.xml";
include(
"parser.php");
?>
lo que yo quisiera es ejecutar el script "parser.php" con distintos valores de $file.

he probado así:

Código PHP:
<?
$file 
"http://www.dominio.com/archivo.xml";
include(
"parser.php");

$file "http://www.dominio.com/archivo1.xml";
include(
"parser.php");

$file "http://www.dominio.com/archivo2.xml";
include(
"parser.php");

?>
pero solo parsea el primer xml.

¿alguien sabe como hacerlo?

¿hay algun modo de vaciar el valor de todas las variables del archivo parser.php después de cada ejecución?

Saludos y gracias!
  #2 (permalink)  
Antiguo 18/01/2006, 04:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... pero qué hace "parser.php"?, de qué manera ocupa a $file y qué entrega?... seguro es una clase, cuando menos una función... necesitas mostrarlo.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 18/01/2006, 17:30
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
$file contiene la url del xml que parsea el archivo parser.php

aqui dejo el código de parser.php:

Código PHP:
<?php
/*  PHP RSS Reader v1.1
    By Richard James Kendall 
    Bugs to [email protected] 
    Free to use, please acknowledge me 
    
    Place the URL of an RSS feed in the $file variable.
       
       The $rss_channel array will be filled with data from the feed,
       every RSS feed is different by by and large it should contain:
       
       Array {
           [TITLE] = feed title
           [DESCRIPTION] = feed description
           [LINK] = link to their website
           
           [IMAGE] = Array {
                       [URL] = url of image
                       [DESCRIPTION] = alt text of image
                   }
           
           [ITEMS] = Array {
                       [0] = Array {
                               [TITLE] = item title
                               [DESCRIPTION] = item description
                               [LINK = a link to the story
                           }
                       .
                       .
                       .
                   }
       }
       
       By default it retrives the Reuters Oddly Enough RSS feed. The data is put into the array
       structure so you can format the information as you see fit.
*/
set_time_limit(0);



$rss_channel = array();
$currently_writing "";
$main "";
$item_counter 0;

function 
startElement($parser$name$attrs) {
       global 
$rss_channel$currently_writing$main;
       switch(
$name) {
           case 
"RSS":
           case 
"RDF:RDF":
           case 
"ITEMS":
               
$currently_writing "";
               break;
           case 
"CHANNEL":
               
$main "CHANNEL";
               break;
           case 
"IMAGE":
               
$main "IMAGE";
               
$rss_channel["IMAGE"] = array();
               break;
           case 
"ITEM":
               
$main "ITEMS";
               break;
           default:
               
$currently_writing $name;
               break;
       }
}

function 
endElement($parser$name) {
       global 
$rss_channel$currently_writing$item_counter;
       
$currently_writing "";
       if (
$name == "ITEM") {
           
$item_counter++;
       }
}

function 
characterData($parser$data) {
    global 
$rss_channel$currently_writing$main$item_counter;
    if (
$currently_writing != "") {
        switch(
$main) {
            case 
"CHANNEL":
                if (isset(
$rss_channel[$currently_writing])) {
                    
$rss_channel[$currently_writing] .= $data;
                } else {
                    
$rss_channel[$currently_writing] = $data;
                }
                break;
            case 
"IMAGE":
                if (isset(
$rss_channel[$main][$currently_writing])) {
                    
$rss_channel[$main][$currently_writing] .= $data;
                } else {
                    
$rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case 
"ITEMS":
                if (isset(
$rss_channel[$main][$item_counter][$currently_writing])) {
                    
$rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    
//print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                    
$rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input");
}

while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("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);

// output as HTML
print ("<html><head><title>PHP RSS Reader</title></head><body>");
if (isset(
$rss_channel["IMAGE"])) {
    print (
"<a href=\"" $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"5\">" utf8_decode(trim(addslashes($rss_channel["TITLE"]))) . "</font><br><br>");
} else {
    print (
"<font size=\"5\">" $rss_channel["TITLE"] . "</font><br><br>");
}
print (
"<i>" utf8_decode(trim(addslashes($rss_channel["DESCRIPTION"]))) . "</i><br><br>");
?>
gracias por tu ayuda!
  #4 (permalink)  
Antiguo 19/01/2006, 08:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... funciones.

Para no complicarse la vida, podrías crear un array con las URL a los XML y poner el parseo dentro de un foreach() ...

---------------
Prueba con esto:
Código PHP:
<?php
/*  PHP RSS Reader v1.1
    By Richard James Kendall 
    Bugs to [email protected] 
    Free to use, please acknowledge me 
    
    Place the URL of an RSS feed in the $file variable.
       
       The $rss_channel array will be filled with data from the feed,
       every RSS feed is different by by and large it should contain:
       
       Array {
           [TITLE] = feed title
           [DESCRIPTION] = feed description
           [LINK] = link to their website
           
           [IMAGE] = Array {
                       [url] = url of image
                       [DESCRIPTION] = alt text of image
                   }
           
           [ITEMS] = Array {
                       [0] = Array {
                               [TITLE] = item title
                               [DESCRIPTION] = item description
                               [LINK = a link to the story
                           }
                       .
                       .
                       .
                   }
       }
       
       By default it retrives the Reuters Oddly Enough RSS feed. The data is put into the array
       structure so you can format the information as you see fit.
*/
set_time_limit(0);



$rss_channel = array();
$currently_writing "";
$main "";
$item_counter 0;

function 
startElement($parser$name$attrs) {
       global 
$rss_channel$currently_writing$main;
       switch(
$name) {
           case 
"RSS":
           case 
"RDF:RDF":
           case 
"ITEMS":
               
$currently_writing "";
               break;
           case 
"CHANNEL":
               
$main "CHANNEL";
               break;
           case 
"IMAGE":
               
$main "IMAGE";
               
$rss_channel["IMAGE"] = array();
               break;
           case 
"ITEM":
               
$main "ITEMS";
               break;
           default:
               
$currently_writing $name;
               break;
       }
}

function 
endElement($parser$name) {
       global 
$rss_channel$currently_writing$item_counter;
       
$currently_writing "";
       if (
$name == "ITEM") {
           
$item_counter++;
       }
}

function 
characterData($parser$data) {
    global 
$rss_channel$currently_writing$main$item_counter;
    if (
$currently_writing != "") {
        switch(
$main) {
            case 
"CHANNEL":
                if (isset(
$rss_channel[$currently_writing])) {
                    
$rss_channel[$currently_writing] .= $data;
                } else {
                    
$rss_channel[$currently_writing] = $data;
                }
                break;
            case 
"IMAGE":
                if (isset(
$rss_channel[$main][$currently_writing])) {
                    
$rss_channel[$main][$currently_writing] .= $data;
                } else {
                    
$rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case 
"ITEMS":
                if (isset(
$rss_channel[$main][$item_counter][$currently_writing])) {
                    
$rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    
//print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                    
$rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

// output as HTML <<- lo movemos para que se imprima antes que todo
print ("<html><head><title>PHP RSS Reader</title></head><body>");

foreach(
$files as $file) { // << recorremos la matriz
      
$xml_parser xml_parser_create();
      
xml_set_element_handler($xml_parser"startElement""endElement");
      
xml_set_character_data_handler($xml_parser"characterData");
      if (!(
$fp fopen($file"r"))) {
          die(
"could not open XML input");
      }

     while (
$data fread($fp4096)) {
         if (!
xml_parse($xml_parser$datafeof($fp))) {
             die(
sprintf("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);


     if (isset(
$rss_channel["IMAGE"])) {
         print (
"<a href=\"" $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"5\">" utf8_decode(trim(addslashes($rss_channel["TITLE"]))) . "</font><br><br>");
     } else {
         print (
"<font size=\"5\">" $rss_channel["TITLE"] . "</font><br><br>");
     }
     print (
"<i>" utf8_decode(trim(addslashes($rss_channel["DESCRIPTION"]))) . "</i><br><br>");
         
$rss_channel=array(); // << borramos datos almacenados
}
?>
y lo emplearías así:
Código PHP:
<?
$files
[]= "http://www.forosdelweb.com/index.xml";
$files[]= "http://newsrss.bbc.co.uk/rss/spanish/news/rss.xml";
$files[]= "http://rss.news.yahoo.com/rss/topstories";

include(
"parser.php");
?>
... ve que se intentó hacer las modificaciones mínimas. Parece que sirve...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 19/01/2006, 11:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
Muchas gracias jam!

No dejas de sorprenderme!
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 23:23.