2012-01-13 14 views
1

長時間リスナー初めて発信者...RSSの解析、たぶんphp4> php5の問題?

私はこの機能を持っている(Iドン;申し訳ありませんから、私は永遠にそれを持っていたそのTリコール)は

それは単に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の「allow_url_fopenを」INI設定は、新しいサーバー上でtrueに設定されていることを確認し、まだPHP 4を提供するホスティング会社があります?これは恐ろしい発展です。 – rdlowrey

+1

警告が表示されますか?スクリプトの上に 'error_reporting(E_ALL);を有効にします。そして/または 'xml_parse_into_struct'の後に' print_r($ valueals); 'を表示します。 – mario

+0

ありがとうございます。エラーが全くなく、print_rを入れると空の配列が返されます。 http://abovethem.net/test/abovethem_xml.php –

答えて

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

Francis、そのコードはローカルではうまくいますが、まだライブに取り組んでいません - どのように奇妙ですか?結局のところ、問題のコードではないようです(しかし、私は古いバージョンに戻っていません:) 私ができるテストはありますか?私は$ xml(false)でvar_dumpを試しましたが、私はそれ以降に何ができるのかに固執しています。 –

+0

また、私はあなたに投票したいと思いますが、私はまだ許可されていません:) –

+0

うーん、使用しているPHPがXMLでコンパイルされていることを確認してください。 これまでXMLがXMLでコンパイルされていた場合、PHP5でこれまで作業していたはずのXMLが役に立ちました。 サーバ上に新しいページを作成して '<?php phpinfo();'と入力すると、そのページに移動してXMLを検索し、ページにリストされているかどうかを確認します。リストされていない場合は、ホストにPHPをXMLでコンパイルすること(非常に重要なコンポーネントです)やホストの変更(痛みの種ですが、ホストがXMLでコンパイルされたPHPを持たないことは愚かでしょう)。 phpinfoページを見終わったら、phpinfoページをサーバから削除してください。 –

0

そうでない場合は、ファイル($ URLが)

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

+0

素晴らしいphpinfoがチェックされています。サポートに連絡し、それをソートする時間、彼らは並べ替えることができると思います。 –

+0

もう一度お返事ありがとうございます。この作品が欲しいと思っています。 –