解析RSS,也许php4-> php5问题?

时间:2012-01-13 19:16:30

标签: php xml rss feed

长时间听众第一次来电...

我有这个功能(我不记得它对不起,我已经永远拥有它了)

它只是解析一个XML提要并创建一个即将到来的演出列表 - 它工作正常,但更改为使用最新PHP的新服务器,但它无法正常工作。

    function parseRSS($url) { 

    $feedeed = implode('', file($url));
    $parser = xml_parser_create();
    xml_parse_into_struct($parser, $feedeed, $valueals, $index);
    xml_parser_free($parser);

    foreach($valueals as $keyey => $valueal){
        if($valueal['type'] != 'cdata') {
            $item[$keyey] = $valueal;
        }
    }
    $i = 0;
    foreach($item as $key => $value){
        if($value['type'] == 'open') {
            $i++;
            $itemame[$i] = $value['tag']; 
        } elseif($value['type'] == 'close') {

            $feed = $values[$i];
            $item = $itemame[$i];
            $i--;

            if(count($values[$i])>1){
                $values[$i][$item][] = $feed;
            } else {
                $values[$i][$item] = $feed;
            }
        } else {
            $values[$i][$value['tag']] = $value['value'];  
        }
    }
    return $values[0];
} 

$xml = parseRSS("http://acousti.co/feeds/artist/AboveThem");

$count = 0;

foreach($xml['RSS']['CHANNEL']['ITEM'] as $item) {
        $pubDate = $item['PUBDATE'];
        $pubDateFormatted = date('D j M Y', strtotime($pubDate));

        echo("<a href=\"{$item['LINK']}\" target=\"_blank\" class=\"indexBoxNews\">{$item['DESCRIPTION']}{$link}</a>
            <p class=\"rss-date\">$pubDateFormatted</p>");

        if (++$count == 5) break;
}

有谁知道为什么它可能已停止工作 - 代码是在PHP5之前编写的,这肯定是因为这可能是兼容性问题?

任何帮助非常感谢:) 罗布

2 个答案:

答案 0 :(得分:0)

由于您现在使用的是PHP 5,因此您可能只想使用simplexml重写代码。 PHP4没有添加额外的库,也没有很好的处理XML的方法,但是现在使用PHP 5,你的代码应该只是你用于PHP 4的一小部分。

试试这个:

$xml = simplexml_load_file('http://acousti.co/feeds/artist/AboveThem');

foreach ($xml->channel->item as $item)
{
    $pubDateFormatted = date('D j M Y', strtotime((string) $item->pubDate));
    echo '<a href="' . (string) $item->link . '" target="_blank" class="indexBoxNews">' . (string) $item->description . '</a>
            <p class="rss-date">' . $pubDateFormatted . '</p>';
}

答案 1 :(得分:0)

确保在新服务器上将PHP的“allow_url_fopen”ini设置设置为true,否则文件($ url)将无法正常工作

http://gr.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen