Welcome Guest ( Log In | Register )



 
Reply to this topicStart new topic
> Rss/atom Feed For Php, news feed
Yaghoob
post Mar 8 2007, 02:37 AM
Post #1


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 22
Joined: 6-March 07
From: Iran Mashhad
Member No.: 20,752



Hi
I 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
Go to the top of the page
 
+Quote Post
closed
post Mar 8 2007, 06:13 AM
Post #2


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 26
Joined: 6-March 07
Member No.: 20,755



try this one -> http://www.evilwalrus.org/scripts/PHP_XML_...ry_version_1_2b
Go to the top of the page
 
+Quote Post
Yaghoob
post Mar 8 2007, 02:06 PM
Post #3


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 22
Joined: 6-March 07
From: Iran Mashhad
Member No.: 20,752



Thanks a lot smile.gif
But i have some problems yet wub.gif

It's your offered code: xml.inc.php
CODE
<?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;
}


################################
/* Example
Stick 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

CODE
$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:
QUOTE
Warning: file_get_contents(http://electronic-science.mihanblog.com/rss.aspx) [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... sad.gif
Know it that my XML address is utf-8 encoding.

This post has been edited by Yaghoob: Mar 8 2007, 02:14 PM
Go to the top of the page
 
+Quote Post
closed
post Mar 8 2007, 03:53 PM
Post #4


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 26
Joined: 6-March 07
Member No.: 20,755



QUOTE(Yaghoob @ Mar 8 2007, 10:06 PM) *
$data = file_get_contents('http://electronic-science.mihanblog.com/rss.aspx');

...

Attention to $data variable at end lines

CODE
$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 wink.gif
Go to the top of the page
 
+Quote Post
Yaghoob
post Mar 8 2007, 07:20 PM
Post #5


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 22
Joined: 6-March 07
From: Iran Mashhad
Member No.: 20,752



Excuse me, i'm a beginner PHP programmer rolleyes.gif
Your speaks means that i can't use this script for my purpose. Yes? huh.gif

I had found another XML Reader wink.gif But i can't install it on localhost... happy.gif

It's here: Feed2JS
Web page: Feed2js.org

Please guide me how to install it

Thanks
Go to the top of the page
 
+Quote Post
closed
post Mar 9 2007, 12:28 PM
Post #6


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 26
Joined: 6-March 07
Member No.: 20,755



docs on how to set up in your localhost +> http://feed2js.org/index.php?s=download
it'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://www.php.net/manual/en/function.xml-...into-struct.php

i consider you want to learn how to do it. the manual is your best friend.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

Collapse

> Similar Topics

Topics Topics
  1. Simple PHP News System Problems(1)


 



- Lo-Fi Version Time is now: 20th August 2008 - 10:53 AM