2012-01-13 58 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