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

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

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

はじめまして、phpを勉強しています。 ちょっとつまづいてしました。 質問をさせて下さい。 (phpは5.25の環境になります) $mainrss = array ( 'http://www.hoge.com/?feed=rss2', 'http://www.hoge2.com/?xml', 'http://www.hoge3.com/index20.rdf' ); $rssarray = array(); $today = date(U); foreach ($mainrss as $url){ $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); (省略) 上記の $mainrss = array ( 'http://www.hoge.com/?feed=rss2', 'http://www.hoge2.com/?xml', 'http://www.hoge3.com/index20.rdf' ); 部分を $mainrssarray = file('rss.txt'); として外部テキストファイルからデータを呼び込もうとしたのですがだめでした。 rss.txtの内容 'http://www.hoge.com/?feed=rss2', 'http://www.hoge2.com/?xml', 'http://www.hoge3.com/index20.rdf' どのようにすれば外部のテキストファイルから呼び込んでくれるでしょうか? 初心者的な質問で大変申し訳ないんですが、アドバイスをよろしくお願い致します;;

  • PHP
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
  • 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行目に問題があるみたいなんです。 外部ファイルへの呼び込み方法は私が書いた方法で問題ないのでしょうか?

関連するQ&A

  • RSS Feedの外部ファイル読み込み

    RSS Feedのソースの中に外部ファイルを読み込むことは出来ますでしょうか? 以下のような感じで、RSS Feedのrss.xmlにcontents.xmlをインクルードすることは、可能でしょうか。 可能であれば、どのように記述すれば良いでしょうか? 分かる方、よろしくお願い致します。 rss.xml----------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xml:lang="ja"> <channel> <title>RSSのタイトル</title> <link>http://~</link> <description>RSSの説明</description> <language>ja</language> <copyright>RSSのコピーライト</copyright> <lastBuildDate>日付</lastBuildDate> <item> <title>タイトル1</title> <link>http://~</link> <description>タイトル1の説明</description> <category>タイトル1のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ここに「contents.xml」の内容を読み込みたい </channel> </rss> ------------------------------------------------------------------ contents.xml------------------------------------------------------ <?xml version="1.0" encoding="UTF-8" ?> <item> <title>タイトル2</title> <link>http://~</link> <description>タイトル2の説明</description> <category>タイトル2のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ------------------------------------------------------------------

    • ベストアンサー
    • XML
  • RDFファイルは何故拡張子が.rdfでなくとも良いのでしょうか?

    自社サイトにRSS機能を設置しようとしておりますが、設置スタイルがサイトによって色々で、妥当が何かわかりません。 [1] 中身は同じみたいなのに、何故拡張子が二種類あるんでしょうか? 同じ中身みたいなのに、サイトによって.rdfとされていたかと思うと、.xmlになっていたりもします。 何故二種類の拡張子が共存してるんでしょうか? たとえば、hoge.xmlのファイルを、単に拡張子変更してhoge.rdfにすれば、それだけで.rdfのちゃんとしたファイルになるんでしょうか? [2] なぜ三種類あるのでしょうか? rss 1.0、rss 2.0、atom と、何故三つあるんでしょうか? メーカーが違う的なこと?? [3] 設置場所はどこでも良いのでしょうか? トヨタ:rssというディレクトリを設け、そこに.rdfファイル 日産:rss.nissan.co.jpというサブドメインを設け、そこに.rdfファイル パナソニック:ドメイン直下に設置。.xmlファイル それぞれ違う選択をしていますが、それぞれ何かメリットがあるんでしょうか??

    • ベストアンサー
    • CSS
  • 他のサイト(RSS)を自サイトより出力したい

    現在、複数のrssをyahoopipesを使って合体させて出力しています。 自サイトにそのrssをHTML形式で表示はできているのですが、feedを参照すると、yahoopipesのアドレスになります。 そこで、このyahoopipesのアドレスを、自サイトが出力したかのようにしたいです。 http://pipes.yahoo.com/pipes/pipe.run?_id=**********&_render=rss を http://www.*****.com/feed.rdfやxml等 にしたいです。 なにかcgi・php等のプログラムを介して、自サイトにfeedファイルを出力できるものはないでしょうか。

    • 締切済み
    • PHP
  • php 外部ファイルについて

    php初心者です。 テキスト表示でランダムリンクをしたいのですが リンク先のURLとテキストを外部ファイルにしたいのです。 現在------------------------ <?php srand((double)microtime()*1000000); $ad_list1 = file("20.txt"); $ad_key1 = array_rand($ad_list1, 2); $ad1 = $ad_list1[$ad_key1[0]]; // 表示 echo "ID=$ad1"; ?> ----------------------------- ↑このphpソースを組み入れ、外部ファイル20.txtには ----------------------------- <a href="http://domain.jp/?id=111">111</a> <a href="http://domain.jp/?id=222">222</a> <a href="http://domain.jp/?id=333">333</a> ・ ・ ------------------------------ という感じでリンク先URLを1行ずつ書いています。 テキスト表示は ID=111 という感じで表示されるようにはなったのですが phpソースの中に http://domain.jp/? までを組み込んで、外部ファイルの内容を ------------------------------ 111 222 333 ・ ・ ------------------------------ とするだけで、 表示される ID=111をクリックすると http://domain.jp/?111 のページが表示されるようにするには どうすれば良いのでしょうか。 また、そういった事は可能でしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 子ノードの出力について

    xmlを出力する際にコロンを含んだ部分につまづいています。 xmlデータはhttp://www3.asahi.com/rss/index.rdf <dc:date>の部分ですが、いろいろなサイトを参考にした結果、 $date = $xml->item->dc->dateや $date = $xml->item->children('http://www3.asahi.com/rss/index.rdf') などとしてもエラーになってしまいます。 出力は echo $date としています。 phpのバージョンは5です。 アドバイスをお願いします。 (php.ini設定の必要がある場合は、こちらもお願いします。)

    • 締切済み
    • PHP
  • xmlやrdfのurlをphpで抽出できますか?

    xmlやrdfのurlをphpで抽出したいのですが、可能でしょうか? 具体的には下記URLから http://manabekawori.cocolog-nifty.com/ http://manabekawori.cocolog-nifty.com/blog/atom.xml か http://manabekawori.cocolog-nifty.com/blog/index.rdf のどちらかひとつをphpで抽出できればいいのですが、そういうことは可能でしょうか?

    • ベストアンサー
    • PHP
  • 外部ファイル(テキスト)を取り込んで表示すると余計なおまけが・・・

    おはようございます。 以下のようにして外部からテキストファイルを取り込みました。 $FileName = "hoge.txt"; $FileIn = include($FileName); if($FileIn){ echo $FileIn; } すると、『hoge.txt』の中身をどのようにしようが反映されるのですが、 最後に必ず「1」と表示されます。 hoge.txtの中身が「こんにちは」なら「こんにちは1」 「さようなら」→「さようなら1」 「困ったよ1」→「困ったよ11」 「<p>おはようございます</p>」→「おはようございます」改段「1」 これは何故でしょうか? 「include」の代わりに「require」や「include_once」を使っても 全く同じ症状です。 どうしたら直るでしょうか。 初歩的な質問で恐縮ですが、皆さまのお知恵を拝借できれば幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • xmlとrdfの違いはなんですか?

    rssフィードなどでは、xmlは文法で、rdfは拡張子になっていることが多い。しかし、xmlの文法にxmlの拡張子では駄目なのでしょうか? http://jin115.com/index.rdf

    • ベストアンサー
    • XML
  • 外部テキストで&amp;を表示させるにはどうすればよいでしょう?

    外部テキスト(.txt)のなかで、リンク先のURLを指定しているのですが、URLに &amp;  が含まれているため、flash側がそこで変数の切り替えと認識してしまい、正しく読み込むことができません。 xmlのものに作り替える以外に方法はないものでしょうか?  ご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • PHPで外部ファイルから取り込んだデータを配列に

    外部ファイルから取り込んだデータを、配列に代入したいと考えています。自分で試したのですが、どうしてもうまくいかないので詳しい方、どうかよろしくお願いします。 外部のdatファイルは3項目をカンマ区切りで記述してあり、その3項目の繰り返しになっています。そこで次のスクリプトを実行すると、echo結果は$aの列挙になります。 <?php //ファイル名 $file_name = "ファイルのURL/××.dat"; //ファイルを読み取りモードで開く $file = fopen($file_name, "r") or die("OPENエラー"); //ファイルをロックする flock($file, LOCK_SH); //出力 while (!feof($file)){ $string = fgets($file,1000); list($a, $b, $c , $d) = explode(",", $string); $d="$a".","; echo "$d"; } //ロックを開放する flock($file, LOCK_UN); //ファイルを閉じる fclose($file); ?> じつは、この$aの内容が、RSSフィードのURLになっており、次のスクリプトでRSSの更新情報を書き出すのですが、$dの中のカンマ区切りのデータを、次のスクリプトの●●●部分に取り込みたいのですが、どう記述すればよいのかわかりません。 <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array( ●●● 'URL1', 'URL2', 'URL3' )); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(100); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <!--出力--> <ul style="height: 200px; margin: 10; padding: 0; overflow-y: scroll;"> <?php if ($maxitems == 0) echo '<li style="list-style: none;">No items.</li>>'; else foreach ( $rss_items as $item ) : ?> <li style="list-style: none; margin: 0; padding: 0;"><?php echo $item->get_date("Y-n-j"); ?> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a></li> <?php endforeach; ?> </ul> どうか、お知恵をお貸しください、よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう