Yaghoob 0 Report post Posted March 8, 2007 HiI want to put Link of latest posts and a short text of that post from other xml (rss/atom,...) feeds to my page.XML addresses are stored in a mysql database.Please offer me a free and no ads RSS/XML Reader script.Thanks Share this post Link to post Share on other sites
closed 0 Report post Posted March 8, 2007 try this one -> http://www.evilwalrus.org/ Share this post Link to post Share on other sites
Yaghoob 0 Report post Posted March 8, 2007 (edited) Thanks a lot But i have some problems yet It's your offered code: xml.inc.php <?php##################################################################################### XML Library, by Keith Devens, version 1.2b# http://keithdevens.com/software/phpxml## This code is Open Source, released under terms similar to the Artistic License.# Read the license at http://keithdevens.com/software/license######################################################################################################################################################################## XML_unserialize: takes raw XML as a parameter (a string)# and returns an equivalent PHP data structure###################################################################################function & XML_unserialize(&$xml){ $xml_parser = &new XML(); $data = &$xml_parser->parse($xml); $xml_parser->destruct(); return $data;}#################################################################################### XML_serialize: serializes any PHP data structure into XML# Takes one parameter: the data to serialize. Must be an array.###################################################################################function & XML_serialize(&$data, $level = 0, $prior_key = NULL){ if($level == 0){ ob_start(); echo '<?xml version="1.0" ?>',"n"; } while(list($key, $value) = each($data)) if(!strpos($key, ' attr')) #if it's not an attribute #we don't treat attributes by themselves, so for an empty element # that has attributes you still need to set the element to NULL if(is_array($value) and array_key_exists(0, $value)){ XML_serialize($value, $level, $key); }else{ $tag = $prior_key ? $prior_key : $key; echo str_repeat("t", $level),'<',$tag; if(array_key_exists("$key attr", $data)){ #if there's an attribute for this element while(list($attr_name, $attr_value) = each($data["$key attr"])) echo ' ',$attr_name,'="',htmlspecialchars($attr_value),'"'; reset($data["$key attr"]); } if(is_null($value)) echo " />n"; elseif(!is_array($value)) echo '>',htmlspecialchars($value),"</$tag>n"; else echo ">n",XML_serialize($value, $level+1),str_repeat("t", $level),"</$tag>n"; } reset($data); if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); return $str; }}#################################################################################### XML class: utility class to be used with PHP's XML handling functions###################################################################################class XML{ var $parser; #a reference to the XML parser var $document; #the entire XML structure built up so far var $parent; #a pointer to the current parent - the parent will be an array var $stack; #a stack of the most recent parent at each nesting level var $last_opened_tag; #keeps track of the last tag opened. function XML(){ $this->parser = &xml_parser_create(); xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false); xml_set_object(&$this->parser, &$this); xml_set_element_handler(&$this->parser, 'open','close'); xml_set_character_data_handler(&$this->parser, 'data'); } function destruct(){ xml_parser_free(&$this->parser); } function & parse(&$data){ $this->document = array(); $this->stack = array(); $this->parent = &$this->document; return xml_parse(&$this->parser, &$data, true) ? $this->document : NULL; } function open(&$parser, $tag, $attributes){ $this->data = ''; #stores temporary cdata $this->last_opened_tag = $tag; if(is_array($this->parent) and array_key_exists($tag,$this->parent)){ #if you've seen this tag before if(is_array($this->parent[$tag]) and array_key_exists(0,$this->parent[$tag])){ #if the keys are numeric #this is the third or later instance of $tag we've come across $key = count_numeric_items($this->parent[$tag]); }else{ #this is the second instance of $tag that we've seen. shift around if(array_key_exists("$tag attr",$this->parent)){ $arr = array('0 attr'=>&$this->parent["$tag attr"], &$this->parent[$tag]); unset($this->parent["$tag attr"]); }else{ $arr = array(&$this->parent[$tag]); } $this->parent[$tag] = &$arr; $key = 1; } $this->parent = &$this->parent[$tag]; }else{ $key = $tag; } if($attributes) $this->parent["$key attr"] = $attributes; $this->parent = &$this->parent[$key]; $this->stack[] = &$this->parent; } function data(&$parser, $data){ if($this->last_opened_tag != NULL) #you don't need to store whitespace in between tags $this->data .= $data; } function close(&$parser, $tag){ if($this->last_opened_tag == $tag){ $this->parent = $this->data; $this->last_opened_tag = NULL; } array_pop($this->stack); if($this->stack) $this->parent = &$this->stack[count($this->stack)-1]; }}function count_numeric_items(&$array){ return is_array($array) ? count(array_filter(array_keys($array), 'is_numeric')) : 0;}################################/* ExampleStick some xml in a file called xml.php and run it in the same directory of this script. It will output the structure of $xml which is the array containing the xml data.*/################################$data = file_get_contents('http://electronic-science.mihanblog.com/rss.aspx');$xml = XML_unserialize($data);print_r($xml);?> Attention to $data variable at end lines $data = file_get_contents('http://electronic-science.mihanblog.com/rss.aspx'); I had put any of my XML addresses from database for test.But running this page on my localhost warnnings: Warning: file_get_contents(http://electronic-science.mihanblog.com/post/rss) [function.file-get-contents]: failed to open stream: A non-blocking socket operation could not be completed immediately. in C:\Apache2\htdocs\xml.inc.php on line 123Where is the problem? Please guide me... Know it that my XML address is utf-8 encoding. Edited March 8, 2007 by Yaghoob (see edit history) Share this post Link to post Share on other sites
closed 0 Report post Posted March 8, 2007 $data = file_get_contents('http://electronic-science.mihanblog.com/post/rss');...Attention to $data variable at end lines $data = file_get_contents('http://electronic-science.mihanblog.com/rss.aspx'); try the code first with an xml file at your localhost, just for testing purpose. afaik that code reads xml files resides in the same domain. on the other hand you might be using firewall that prevent you from reading files outside the box.and i think you need modify that code to read some files outside your domain name. as you see, you might consider some security too. it seems your taking the path to suicidal hell if you don't do that Share this post Link to post Share on other sites
Yaghoob 0 Report post Posted March 8, 2007 Excuse me, i'm a beginner PHP programmer Your speaks means that i can't use this script for my purpose. Yes? I had found another XML Reader But i can't install it on localhost... It's here: Feed2JSWeb page: Feed2js.orgPlease guide me how to install itThanks Share this post Link to post Share on other sites
closed 0 Report post Posted March 9, 2007 docs on how to set up in your localhost +> http://feed2js.org/index.php?s=downloadit's easy to follow and i know you can do it. And if didn't work try it at some online server.btw if you still need xml_parser in php. try this link.http://forums.xisto.com/no_longer_exists/i consider you want to learn how to do it. the manual is your best friend. Share this post Link to post Share on other sites