• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部のテキストファイルを読み込みたい)

外部のテキストファイルを読み込みたい

このQ&Aのポイント
  • はじめまして、phpを勉強しています。外部のテキストファイルからデータを呼び込む方法について質問です。
  • $mainrssarray変数を使用して外部テキストファイルからデータを呼び込もうとしましたが、うまくいかなかったようです。どのようにすれば外部のテキストファイルからデータを呼び込むことができるでしょうか?
  • 初心者的な質問で申し訳ありませんが、アドバイスをいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

$mainrssarray = file('rss.txt'); foreach ($mainrss as $url){ って変数名違うんじゃ? rss.txtの内容 'http://www.hoge.com/?feed=rss2', 'http://www.hoge2.com/?xml', 'http://www.hoge3.com/index20.rdf' ってクォートとカンマはいりませんよ? file() だと改行コードついてくるけどそれは大丈夫なんかな?

akane1985
質問者

お礼

回答有難うございます! 本文では修正していない(古い方)のソースコードをコピペしてしまいました。 指摘されました通りforeach ($mainrss as $url)で記述していました。 rss.txtの内容をクォートとカンマをとってみました。 でもだめでした。

その他の回答 (4)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.5

>でもだめでした。 どうだめでした? もう1回 var_dump 結果とエラー内容を。 補足の結果を見る限りでは rss.txt の記述に スペースが入っているとか、記号がおかしいとかそんなとこでは?

  • masaota56
  • ベストアンサー率41% (58/139)
回答No.4

改行かな? foreachの最初に $url = trim($url); を入れてみて下さい。

akane1985
質問者

お礼

私用でお返事おくれて申し訳ございません。 アドバイス通りにしたらなんと!表示してくれました。 有難うございます><

  • masaota56
  • ベストアンサー率41% (58/139)
回答No.2

エラー内容から、fetchの処理にurlがちゃんと渡っているようですね。 一応、 ver_dump(file('rss.txt')); のようにして、他のエラーになる部分をコメントアウトして実行してみて下さい。 これでテキストファイルを取得出来ているか確認できます。 ちゃんと配列で3つ取れていたら、原因は他の部分です。

akane1985
質問者

お礼

クォートとカンマをつけた時・とった時と両方試しましたがエラー内容は同じでした。 $mainrssarray = var_dump(file('rss.txt'));で実行しました。 とった時のエラー内容です。 array(3) { [0]=> string(32) "http://www.hoge.com/?feed=rss2 " [1]=> string(42) "http://www.hoge2.com/?xml " [2]=> string(38) "http://www.hoge3.com/index20.rdf " } Warning: Invalid argument supplied for foreach() in /virtual/ID/public_html/ドメイン名/aaa/index.php on line 20 20行目付近のソースになります。 foreach ($mainrssarray as $url){ $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); foreach ($rss->items as $item ) { $title = $item['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); $title = mb_strimwidth($title, 0, 50,"…",utf8); 外部でテキストを読み込まないで $mainrss = array ( '​http://www.hoge.com/?feed=rss2',​ '​http://www.hoge2.com/?xml',​ '​http://www.hoge3.com/index20.rdf'​ ); で処理をするとしっかりRSSを取得して表示してくれています。 すいませんがわかることがありましたらアドバイスをよろしくお願い致します。

  • masaota56
  • ベストアンサー率41% (58/139)
回答No.1

テキストファイルはちゃんと実行するphpと同階層にありますか? テキストファイルの置き場所を色々変えてみて下さい。

akane1985
質問者

お礼

回答有難うございます 上記のソースを書いたindex.phpと同じ階層に置いております。 index.php | | | rss.txt それでもだめなんです。 MagpieRSSというのを使ってrssを表示させているのですが エラー内容が Warning: Invalid argument supplied for foreach() in /virtual/ID/public_html/ドメイン名/aaa/index.php on line 25 Warning: MagpieRSS: Failed to fetch 'http://www.hoge.com/?feed=rss2',​ (HTTP Error: Invalid protocol "") in /virtual/ID/public_html/ドメイン名/aaa/rss_fetch.inc on line 238 25行目(index.php)とrss_fetch.incの238行目に問題があるみたいなんです。 外部ファイルへの呼び込み方法は私が書いた方法で問題ないのでしょうか?