Salve ragazzi potete aiutarmi con questo codice?
Non mi funziona? Piu specificamente durante l'elaborazione non mi riempe l'array $rss_channel_info e il primo elemento (ossia l'indice 0) dell' array $rss_items
codice:
<?php
define("XML_RSS", 0);
define("XML_CHANNEL", 1);
define("XML_ITEM", 2);
// function xml_start_element_handler
function xml_start_element_handler($xml_parser, $element_name, $attributes) {
if($element_name=="CHANNEL")
$GLOBALS["xml_current_node"]=XML_CHANNEL;
else if($element_name=="ITEM")
$GLOBALS["xml_current_node"]=XML_ITEM;
$GLOBALS["xml_current_tag_state"]=$element_name;
}
// function xml_end_element_handler
function xml_end_element_handler($xml_parser, $element_name) {
if($element_name=="ITEM")
$GLOBALS["xml_items_counter"]++;
}
// function xml_character_data_handler
function xml_character_data_handler($xml_parser, $data) {
switch($GLOBALS["xml_current_node"]) {
case XML_ITEM:
if($GLOBALS["xml_current_tag_state"]=="TITLE")
$GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["title"]=$data;
else if($GLOBALS["xml_current_tag_state"]=="DESCRIPTION")
$GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["description"]=$data;
else if($GLOBALS["xml_current_tag_state"]=="LINK")
$GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["link"]=$data;
break;
case XML_CHANNEL:
if($GLOBALS["xml_current_tag_state"]=="TITLE")
$GLOBALS["rss_channel_info"]["title"]=$data;
else if($GLOBALS["xml_current_tag_state"]=="DESCRIPTION")
$GLOBALS["rss_channel_info"]["description"]=$data;
else if($GLOBALS["xml_current_tag_state"]=="LANGUAGE")
$GLOBALS["rss_channel_info"]["language"]=$data;
break;
}
}
$file_name="./rss.xml";
$xml_current_tag_state="";
$xml_current_node=-1;
$xml_items_counter=0;
$rss_channel_info=array();
$rss_items=array();
$xml_parser=xml_parser_create("utf-8");
xml_set_element_handler($xml_parser, "xml_start_element_handler", "xml_end_element_handler");
xml_set_character_data_handler($xml_parser, "xml_character_data_handler");
if(!$fp=fopen($file_name, "r")) die("Impossibile aprire il file RSS.");
while($data=fread($fp, 5120)) if(!xml_parse($xml_parser, $data, feof($fp))) die("Impossibile analizzare il file RSS.");
fclose($fp);
xml_parser_free($xml_parser);
print_r($rss_channel_info);
print("<hr>");
print_r($rss_items);
?>