- ベストアンサー
fgets()でURLを読み込むとエラーになる
-----url.txt----- http://www.google.co.jp http://www.goo.ne.jp/ ----------------- -----test.php------ $urltxt = fopen("url.txt", "r"); $url = fgets($urltxt); $html = fopen($url, "r"); -------------------- のように、各行にURLが書いてあるテキストファイルを一行ずつ読み込んで、それを引数にしてfopen()したところ、 全てfailed to open stream: HTTP request failed! HTTP/1.0 404 Not Foundとなってしまいます。 print($url)では正しくURLが出力されますし、$urlへの代入を直接$url = "http://www.goo.ne.jp/"としてやれば正常に動作するので、何が原因か分かりません。 テキストファイルは全て半角英数のアドレスのみで、シフトJISで保存しています。 どなたか原因が分かる方、ご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最後に改行が含まれているからだと思います。 $url = chop($url); を加えて、改行を取り除いてあげてください。 例: -----test.php------ $urltxt = fopen("url.txt", "r"); $url = fgets($urltxt); $url = chop($url); $html = fopen($url, "r"); --------------------
その他の回答 (1)
- ultraCS
- ベストアンサー率44% (3956/8947)
テスト環境がすぐに用意できないので、推測かつ、参考意見ですが DOSのテキストファイルからfgetsで読み込んだ場合、文字列の一番後ろ(ASCIIZの0x00の前)にLF(0x0A)かCR(0x0D)がくっついている(どっちだったか忘れた)と思います。これを取り除かないととうまくいかないような気がしますが
お礼
回答ありがとうございます。おっしゃる通りLFが付いていたようです。 大変助かりました。
お礼
ありがとうございます、解決しました。 わざわざeregi_replace("\n", $url)とかしたんですが、chopなんて関数があったんですね。 勉強になります。