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); ?>

Rispondi quotando