Взимане на RSS чрез php

PHP:
$rss_tags = array(
‘title’,
‘link’,
‘guid’,
‘comments’,
‘description’,
‘pubDate’,
‘category’,
);
$rss_item_tag = ‘item’;
$rss_url = ‘http://penchev-bg.eu/feed’;

$rssfeed = rss_to_array($rss_item_tag,$rss_tags,$rss_url);

print_r($rssfeed);

function rss_to_array($tag, $array, $url) {
$doc = new DOMdocument();
$doc->load($url);
$rss_array = array();
$items = array();
foreach($doc->getElementsByTagName($tag) AS $node) {
foreach($array AS $key => $value) {
$items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;
}
array_push($rss_array, $items);
}
return $rss_array;
}
?>
Нещо такова?
 
Styl3rbg каза:
PHP:
$rss_tags = array(
‘title’,
‘link’,
‘guid’,
‘comments’,
‘description’,
‘pubDate’,
‘category’,
);
$rss_item_tag = ‘item’;
$rss_url = ‘http://penchev-bg.eu/feed’;

$rssfeed = rss_to_array($rss_item_tag,$rss_tags,$rss_url);

print_r($rssfeed);

function rss_to_array($tag, $array, $url) {
$doc = new DOMdocument();
$doc->load($url);
$rss_array = array();
$items = array();
foreach($doc->getElementsByTagName($tag) AS $node) {
foreach($array AS $key => $value) {
$items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;
}
array_push($rss_array, $items);
}
return $rss_array;
}
?>
Нещо такова?

Notice: Trying to get property of non-object in C:\xampp\htdocs\index.php on line 25


Код:
25 $items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;
 
Пробвай това
PHP:
<?php 
setlocale(LC_ALL, 'ru_RU.CP1251'); //установка русской локали для даты 
/********************************************************** 
 * Parse XML data into an array structure                 * 
 * Usage: array parse_rss ( string data )                 * 
 **********************************************************/ 
function parse_rss($reg_exp, $xml_data) { 
    preg_match_all($reg_exp, $xml_data, $temp); 
    return array( 
        'count'=>count($temp***91;0***93;), 
        'title'=>$temp***91;1***93;, 
        'link'=>$temp***91;2***93;, 
        'desc'=>$temp***91;3***93;, 
        'pubdate'=>$temp***91;4***93;   //добавлено 
    ); 
} 

/********************************************************** 
 * Parse Array data into an HTML structure                * 
 * Usage: string parse_rss ( array data )                 * 
 **********************************************************/ 
function output_rss($pattern, $rss_data) { 
    $temp = ""; 
    for($i=0; $i<$rss_data***91;'count'***93;; $i++) { 
        $temp .= sprintf($pattern, 
        strftime("%d %B %Y %R", strtotime($rss_data***91;'pubdate'***93;***91;$i***93;)), 
            $rss_data***91;'link'***93;***91;$i***93;, 
            html_entity_decode($rss_data***91;'title'***93;***91;$i***93;), 
            html_entity_decode($rss_data***91;'desc'***93;***91;$i***93;) 
               //добавлено 
        ); 
    } 
    return $temp; 
} 

/********************************************************** 
 * Settings                                               * 
 **********************************************************/ 
$url = 'http://rss.svobodanews.ru/?zone=ru_news_world&count=50'; 

$reg_exp  = '#<item>.*?<title>(.*?)<\/title>.*?'; 
$reg_exp .='<link>(.*?)<\/link>.*?<description>'; 
$reg_exp .='(.*?)<\/description>.*?<pubDate>'; //исправлено 
$reg_exp .= '(.*?)<\/pubDate>.*?<\/item>#si';  //добавлено 

$pattern = '<i>%s</i><br><a href="%s"><strong>%s</strong></a><br>%s<br><br>'; 
//строка форматирования вывода, можно переставить местами поля и добавить теги 

/********************************************************** 
 * Main script                                            * 
 **********************************************************/ 
if ( $xml_data = file_get_contents($url) ) { 
    // вот так можно --> 
    if ( extension_loaded('mb_string') ) { 
        $xml_data = mb_convert_encoding($xml_data, "windows-1251", "utf-8"); 
    } elseif ( extension_loaded('iconv') ) { 
        $xml_data = iconv('utf-8', 'windows-1251', $xml_data); 
    } 
    // <-- 
    $rss_data = parse_rss($reg_exp, $xml_data); 
    echo output_rss($pattern, $rss_data); 
} 
/********************************************************** 
 * The END                                                * 
 **********************************************************/ 
?>
Взех го от един руски форум
 
Пак ми изкарва грешки.. първия код който ми даде не знаеш ли как може да се оправи ? :(
 
PHP:
<?php


$filename = 'http://penchev-bg.eu/feed';
$handle1 = fopen($filename, "rb");

if ($handle1) {

  $data='';
        while (!feof($handle1)) {
                $data .= fread($handle1, 8192);
        }
        fclose($handle1);


        $p = xml_parser_create();
        xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
        xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1);
        xml_parse_into_struct($p,$data,$values,$index);
        xml_parser_free($p);

        $pointer = 1;

        for ($i=1;$i<=sizeof($values);$i++)
        {
                if ($pointer<=10) {
                        if ($values[$i][tag]=='item') $process=true;

                        if ($process==true) {
                                if ($values[$i][tag]=='title')
                                {
                                        $linktitle[$pointer] = $values[$i][value];
                                }

                                if ($values[$i][tag]=='link')
                                {
                                        $linkurl[$pointer] = $values[$i][value];
                                        $pointer++;
                                        $process=false;
                                }
                        }
                }
        }

        for ($i=1;$i<=10;$i++)
        {
                echo ' <a href="'.$linkurl[$i].'" target="_blank">'.htmlspecialchars($linktitle[$i]).'</a><hr />';

        }

}
?>
Ето това работи :)
Демо: http://penchev-bg.eu/rssdemo.php
 
niki_noki каза:
Работи ама като сложа примерно от другаде да взима RSS и ми вади само
HTML:
<hr />
Дай ми линка от този сайт, който се опитваш да пробвам и аз :)
 
Styl3rbg каза:
niki_noki каза:
Работи ама като сложа примерно от другаде да взима RSS и ми вади само
HTML:
<hr />
Дай ми линка от този сайт, който се опитваш да пробвам и аз :)

http://www.kaldata.com/rosebud/rss.php

Примерно този :)
 
niki_noki каза:
То ми беше така , но пак го замених и няма резултат
Може би някоя функция от хостинг компанията, не ти разрешава вземането.. Аз съм на VPS-а и там работи, сега ще опитам на localhost vertrigo 2.22 и ще ти кажа дали тръгва
ПП: И там тръгва
ПП2: Моят резултат на shared хостинг е http://it.penchev-bg.eu/rssdemo.php Ето това..
 
Styl3rbg каза:
niki_noki каза:
То ми беше така , но пак го замених и няма резултат
Може би някоя функция от хостинг компанията, не ти разрешава вземането.. Аз съм на VPS-а и там работи, сега ще опитам на localhost vertrigo 2.22 и ще ти кажа дали тръгва
ПП: И там тръгва
ПП2: Моят резултат на shared хостинг е http://it.penchev-bg.eu/rssdemo.php Ето това..

Същото е и при мен .. :?
 
niki_noki каза:
Styl3rbg каза:
niki_noki каза:
То ми беше така , но пак го замених и няма резултат
Може би някоя функция от хостинг компанията, не ти разрешава вземането.. Аз съм на VPS-а и там работи, сега ще опитам на localhost vertrigo 2.22 и ще ти кажа дали тръгва
ПП: И там тръгва
ПП2: Моят резултат на shared хостинг е http://it.penchev-bg.eu/rssdemo.php Ето това..

Същото е и при мен .. :?
Ами пиши на support-а на superhosting, дай им кода от скрипта и ги питай, коя от функциите е забранена, защото и в icn е така, а на vps и localhost е наред
 

Back
Горе