اطلاعیه

Collapse
No announcement yet.

خروجی سایت روی یک پیج

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • خروجی سایت روی یک پیج

    سلام

    من میخوام RSS و RSS2 رو بیارم تو یه صفحه نشون بدم اما صفحه هم میخوام php باشه ، دوستان php کار یک کد سمپل بزارن ...

    ممنون
    CCNA, CCNP RnSnT, MCTS, MCSA, MCITP, MCITP:Messaging
    Next Goals: CCIE RnS, CEHv7
    www.resort.ir

  • #2
    Class اصلی
    کد PHP:
    <?php
    /*
        RSS_PHP - the PHP DOM based RSS Parser
        Author: <rssphp.net>
        Published: 200801 :: blacknet :: via rssphp.net
        
        RSS_PHP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.

        Usage:
            See the documentation at http://rssphp.net/documentation
        Examples:
            Can be found online at http://rssphp.net/examples
    */

    class rss_php {
        
        public 
    $document;
        public 
    $channel;
        public 
    $items;

    /****************************
        public load methods
    ***/
        # load RSS by URL
            
    public function load($url=false$unblock=true) {
                if(
    $url) {
                    if(
    $unblock) {
                        
    $this->loadParser(file_get_contents($urlfalse$this->randomContext()));
                    } else {
                        
    $this->loadParser(file_get_contents($url));
                    }
                }
            }
        
    # load raw RSS data
            
    public function loadRSS($rawxml=false) {
                if(
    $rawxml) {
                    
    $this->loadParser($rawxml);
                }
            }
            
    /****************************
        public load methods
            @param $includeAttributes BOOLEAN
            return array;
    ***/
        # return full rss array
            
    public function getRSS($includeAttributes=false) {
                if(
    $includeAttributes) {
                    return 
    $this->document;
                }
                return 
    $this->valueReturner();
            }
        
    # return channel data
            
    public function getChannel($includeAttributes=false) {
                if(
    $includeAttributes) {
                    return 
    $this->channel;
                }
                return 
    $this->valueReturner($this->channel);
            }
        
    # return rss items
            
    public function getItems($includeAttributes=false) {
                if(
    $includeAttributes) {
                    return 
    $this->items;
                }
                return 
    $this->valueReturner($this->items);
            }

    /****************************
        internal methods
    ***/
        
    private function loadParser($rss=false) {
            if(
    $rss) {
                
    $this->document = array();
                
    $this->channel = array();
                
    $this->items = array();
                
    $DOMDocument = new DOMDocument;
                
    $DOMDocument->strictErrorChecking false;
                
    $DOMDocument->loadXML($rss);
                
    $this->document $this->extractDOM($DOMDocument->childNodes);
            }
        }
        
        private function 
    valueReturner($valueBlock=false) {
            if(!
    $valueBlock) {
                
    $valueBlock $this->document;
            }
            foreach(
    $valueBlock as $valueName => $values) {
                    if(isset(
    $values['value'])) {
                        
    $values $values['value'];
                    }
                    if(
    is_array($values)) {
                        
    $valueBlock[$valueName] = $this->valueReturner($values);
                    } else {
                        
    $valueBlock[$valueName] = $values;
                    }
            }
            return 
    $valueBlock;
        }
        
        private function 
    extractDOM($nodeList,$parentNodeName=false) {
            
    $itemCounter 0;
            foreach(
    $nodeList as $values) {
                if(
    substr($values->nodeName,0,1) != '#') {
                    if(
    $values->nodeName == 'item') {
                        
    $nodeName $values->nodeName.':'.$itemCounter;
                        
    $itemCounter++;
                    } else {
                        
    $nodeName $values->nodeName;
                    }
                    
    $tempNode[$nodeName] = array();                
                    if(
    $values->attributes) {
                        for(
    $i=0;$values->attributes->item($i);$i++) {
                            
    $tempNode[$nodeName]['properties'][$values->attributes->item($i)->nodeName] = $values->attributes->item($i)->nodeValue;
                        }
                    }
                    if(!
    $values->firstChild) {
                        
    $tempNode[$nodeName]['value'] = $values->textContent;
                    } else {
                        
    $tempNode[$nodeName]['value']  = $this->extractDOM($values->childNodes$values->nodeName);
                    }
                    if(
    in_array($parentNodeName, array('channel','rdf:RDF'))) {
                        if(
    $values->nodeName == 'item') {
                            
    $this->items[] = $tempNode[$nodeName]['value'];
                        } elseif(!
    in_array($values->nodeName, array('rss','channel'))) {
                            
    $this->channel[$values->nodeName] = $tempNode[$nodeName];
                        }
                    }
                } elseif(
    substr($values->nodeName,1) == 'text') {
                    
    $tempValue trim(preg_replace('/\s\s+/',' ',str_replace("\n",' '$values->textContent)));
                    if(
    $tempValue) {
                        
    $tempNode $tempValue;
                    }
                } elseif(
    substr($values->nodeName,1) == 'cdata-section'){
                    
    $tempNode $values->textContent;
                }
            }
            return 
    $tempNode;
        }
        
        private function 
    randomContext() {
            
    $headerstrings = array();
            
    $headerstrings['User-Agent'] = 'Mozilla/5.0 (Windows; U; Windows NT 5.'.rand(0,2).'; en-US; rv:1.'.rand(2,9).'.'.rand(0,4).'.'.rand(1,9).') Gecko/2007'.rand(10,12).rand(10,30).' Firefox/2.0.'.rand(0,1).'.'.rand(1,9);
            
    $headerstrings['Accept-Charset'] = rand(0,1) ? 'en-gb,en;q=0.'.rand(3,8) : 'en-us,en;q=0.'.rand(3,8);
            
    $headerstrings['Accept-Language'] = 'en-us,en;q=0.'.rand(4,6);
            
    $setHeaders =     'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'."\r\n".
                            
    'Accept-Charset: '.$headerstrings['Accept-Charset']."\r\n".
                            
    'Accept-Language: '.$headerstrings['Accept-Language']."\r\n".
                            
    'User-Agent: '.$headerstrings['User-Agent']."\r\n";
            
    $contextOptions = array(
                
    'http'=>array(
                    
    'method'=>"GET",
                    
    'header'=>$setHeaders
                
    )
            );
            return 
    stream_context_create($contextOptions);
        }
        
    }

    ?>
    برای Run کردن
    کد PHP:
     $RSS_PHP = new rss_php;
        
    $RSS_PHP->load($url);
        
        
    $items_basic $RSS_PHP->getItems(); # return the item property WITHOUT attributes
        
        
    $items_full $RSS_PHP->getItems(true); # return the item property WITH attributes 
    اطلاعات بیشتر
    http://rssphp.net/examples/
    http://rssphp.net/documentation/

    Comment

    Working...
    X