• ベストアンサー

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で保存しています。 どなたか原因が分かる方、ご教授ください。

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

  • ベストアンサー
  • lafu
  • ベストアンサー率50% (1/2)
回答No.2

最後に改行が含まれているからだと思います。 $url = chop($url); を加えて、改行を取り除いてあげてください。 例: -----test.php------ $urltxt = fopen("url.txt", "r"); $url = fgets($urltxt); $url = chop($url); $html = fopen($url, "r"); --------------------

L1L
質問者

お礼

ありがとうございます、解決しました。 わざわざeregi_replace("\n", $url)とかしたんですが、chopなんて関数があったんですね。 勉強になります。

その他の回答 (1)

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.1

テスト環境がすぐに用意できないので、推測かつ、参考意見ですが DOSのテキストファイルからfgetsで読み込んだ場合、文字列の一番後ろ(ASCIIZの0x00の前)にLF(0x0A)かCR(0x0D)がくっついている(どっちだったか忘れた)と思います。これを取り除かないととうまくいかないような気がしますが

L1L
質問者

お礼

回答ありがとうございます。おっしゃる通りLFが付いていたようです。 大変助かりました。

関連するQ&A

専門家に質問してみよう