长时间侦听器第一次调用。。。
我有这个功能(我不记得是从哪里来的,对不起,我已经用了很久了)
它只是解析一个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之前写的,这是肯定的,所以可能是兼容性问题?
非常感谢您的帮助:)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>';
}
确保PHP的"allow_url_fopen"ini设置在新服务器上设置为true,否则文件($url)将无法在上工作
http://gr.php.net/manual/en/filesystem.configuration.php#ini.allow-打开的url