解析RSS,可能是php4->;php5问题?

解析RSS,可能是php4->;php5问题?,php,xml,rss,feed,Php,Xml,Rss,Feed,长时间侦听器第一次调用 我有这个功能(我不记得它从哪里来了对不起,我一直都有这个功能) 它只是解析一个XML提要并创建一个即将发布的GIG列表——它工作得很好,但是使用最新的PHP更换了一个新的服务器,但它不工作 function parseRSS($url) { $feedeed = implode('', file($url)); $parser = xml_parser_create(); xml_parse_into_struct($parser, $

长时间侦听器第一次调用

我有这个功能(我不记得它从哪里来了对不起,我一直都有这个功能)

它只是解析一个XML提要并创建一个即将发布的GIG列表——它工作得很好,但是使用最新的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;
}
函数parseRSS($url){
$feedeed=内爆(“”,文件($url));
$parser=xml_parser_create();
xml_将_解析为_结构($parser,$feedeed,$valuels,$index);
xml解析器免费($parser);
foreach($keyey=>$valueal的价值){
如果($valueal['type']!='cdata'){
$item[$keyey]=$valueal;
}
}
$i=0;
foreach($key=>$value的项目){
如果($value['type']=='open'){
$i++;
$itename[$i]=$value['tag'];
}elseif($value['type']=='close'){
$feed=$values[$i];
$item=$itemame[$i];
$i--;
如果(计数($value[$i])>1){
$values[$i][$item][]=$feed;
}否则{
$values[$i][$item]=$feed;
}
}否则{
$values[$i][$value['tag']]=$value['value'];
}
}
返回$value[0];
} 
$xml=parseRSS(“http://acousti.co/feeds/artist/AboveThem");
$count=0;
foreach($xml['RSS']['CHANNEL']['ITEM']作为$ITEM){
$pubDate=$item['pubDate'];
$pubDateFormatted=date('D j M Y',strottime($pubDate));
回声(“

$pubDateFormatted

”; 如果(++$count==5)中断; }
有人知道它为什么会停止工作吗?代码是在PHP5之前编写的,这是肯定的,所以可能是兼容性问题

非常感谢您的帮助:)
Rob

既然您现在使用的是PHP5,您可能只想使用simplexml重写代码。PHP4在没有添加额外库的情况下,没有一种处理XML的简单方法,但是现在使用PHP5,您的代码应该是PHP4的一小部分

试试这个:

$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>';
}
$xml=simplexml\u加载文件('http://acousti.co/feeds/artist/AboveThem');
foreach($xml->channel->item as$item)
{
$pubDateFormatted=date('djmmy',strottime((字符串)$item->pubDate));
回声'

。$pubDateFormatted.

; }
确保在新服务器上PHP的“allow\u url\u fopen”ini设置设置为true,否则文件($url)将无法工作


omg还有提供PHP4的托管公司吗?这是一个可怕的发展。你收到任何警告吗?启用
错误报告(E\u ALL)位于脚本顶部。和/或向我们展示
print\r($values)
after
xml\u parse\u into\u struct
example。谢谢。完全没有错误,并且放入打印会得到一个空数组。哇,谢谢Francis,该代码在本地运行得很好,但仍然无法在live上运行-有多奇怪?看起来问题毕竟不是代码(不过我不会回到旧版本:)我能做什么测试?我试过在$xml上使用var_dump(false),但我一直在想接下来能做什么。嗯,检查一下,确保您使用的PHP是用xml编译的。如果您以前使用的XML是使用XML支持编译的,那么它应该可以在PHP5上使用。如果您在服务器上创建了一个新页面并将
也放入,请确保启用了allow\u url\u fopen。在另一个页面中,您可以这样做:
echoin\u get('allow\u url\u fopen')如果结果为false,您可以通过.htaccess打开它,如果没有,请向您的主机询问另一件事。谢谢Francis,我已经给服务器人员发了消息-希望他们能够解决问题。谢谢。太好了-检查了phpinfo,现在关机了。是时候联系支持人员并进行分类了,我希望他们能够进行分类。再次感谢所有人-希望这一切都能起作用,当它启动并运行时,我会回来。