Jump to content
xisto Community
Sign in to follow this  
Yaghoob

Rss/atom Feed For Php news feed

Recommended Posts

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

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 123

Where is the problem? Please guide me... ;)

Know it that my XML address is utf-8 encoding.

Edited by Yaghoob (see edit history)

Share this post


Link to post
Share on other sites

$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

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: Feed2JS
Web page: Feed2js.org

Please guide me how to install it

Thanks

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.