2012-01-13 23 views
1

长时间监听器第一次来电者...解析RSS,也许php4-> php5的问题?

我有这个功能(我不;吨回忆起其从对不起,我永远有它)

它只是解析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这是肯定的,所以也许这是一个兼容性问题?

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

+0

OMG仍然会有托管公司提供PHP 4 ?这是一个可怕的发展。 – rdlowrey 2012-01-13 19:18:37

+1

你有任何警告吗?在脚本顶部启用'error_reporting(E_ALL);'。和/或在'xml_parse_into_struct'例子后面显示一个'print_r($ valueals);'。 – mario 2012-01-13 19:20:25

+0

谢谢。根本没有错误,并将print_r放入一个空数组中。 http://abovethem.net/test/abovethem_xml.php – 2012-01-13 19:28:57

回答

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>'; 
} 
+0

哇谢谢弗朗西斯,该代码在当地很有用,但仍然没有在现场工作 - 有多奇怪?看起来这不是代码,毕竟是问题(但我不会回到旧版本:) 我可以做的任何测试?我试过在$ xml(false)上使用var_dump,但是我被困在了我能做的之后。 – 2012-01-13 20:04:23

+0

另外,我会给你投票,但我不允许:) – 2012-01-13 20:05:17

+0

嗯,检查以确保你使用的PHP是用XML编译的。 如果使用XML支持进行编译,那么您以前应该使用PHP 5编写的XML。 如果您在服务器上创建一个新页面,并将'<?php phpinfo();'然后浏览到该页面并搜索XML - 查看它是否列在页面上。如果没有列出,你可能会想让你的主机使用XML编译PHP(这是一个非常关键的组件),或者更改主机(有点痛苦,但是如果主机没有使用XML编译PHP,这会很愚蠢)。 完成查看后,从服务器上删除phpinfo页面。 – 2012-01-13 20:15:00

0

确保PHP的“allow_url_fopen选项” INI设置被设置为true在新服务器上,否则文件($网址)将行不通

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

+0

很好 - 检查phpinfo并关闭。有时间联系支持并获得排序,我希望他们能够排序。 – 2012-01-13 20:10:19

+0

再次感谢所有人 - 希望这能够起作用,当它启动并运行时我会回来。 – 2012-01-13 20:11:02