電子書籍の厳選無料作品が豊富!

はじめまして、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'

どのようにすれば外部のテキストファイルから呼び込んでくれるでしょうか?
初心者的な質問で大変申し訳ないんですが、アドバイスをよろしくお願い致します;;

A 回答 (5件)

$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() だと改行コードついてくるけどそれは大丈夫なんかな?
    • good
    • 0
この回答へのお礼

回答有難うございます!

本文では修正していない(古い方)のソースコードをコピペしてしまいました。
指摘されました通りforeach ($mainrss as $url)で記述していました。


rss.txtの内容をクォートとカンマをとってみました。
でもだめでした。

お礼日時:2009/01/14 05:16

>でもだめでした。


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

改行かな?



foreachの最初に
$url = trim($url);
を入れてみて下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/20 10:45

エラー内容から、fetchの処理にurlがちゃんと渡っているようですね。



一応、
ver_dump(file('rss.txt'));
のようにして、他のエラーになる部分をコメントアウトして実行してみて下さい。
これでテキストファイルを取得出来ているか確認できます。

ちゃんと配列で3つ取れていたら、原因は他の部分です。
    • good
    • 0
この回答へのお礼

クォートとカンマをつけた時・とった時と両方試しましたがエラー内容は同じでした。

$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を取得して表示してくれています。
すいませんがわかることがありましたらアドバイスをよろしくお願い致します。

お礼日時:2009/01/14 05:26

テキストファイルはちゃんと実行するphpと同階層にありますか?


テキストファイルの置き場所を色々変えてみて下さい。
    • good
    • 0
この回答へのお礼

回答有難うございます

上記のソースを書いた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行目に問題があるみたいなんです。

外部ファイルへの呼び込み方法は私が書いた方法で問題ないのでしょうか?

お礼日時:2009/01/14 01:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!