• ベストアンサー

URLの存在チェック

入力されたURLが実際に存在するかチェックする場合 どのように記述すれば良いのでしょうか。 file_existsを使用した場合存在するURLでも全てFALSEで返ってきてしまいました。

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

  • ベストアンサー
回答No.3

> HTTP/1.1 404 Not Found これが無ければOKでしょうから、@fopenでエラーが無ければ良いのかも知れません。 $url = 'http://*****/***.html'; if (@fopen($url,'r')) { echo 'OK'; } else { echo 'NG'; } エラーでもif 内はTRUEじゃないですから、これでOKですね。 一つ勉強になりました(笑。

labilion
質問者

お礼

ありがとうございます。 とても参考になりました^^

その他の回答 (2)

回答No.2

> @fopenにしたのですがこれでも大丈夫でしょうか? 結果は同じだと思いますが。 @はエラー(Worning .............line XX)のようなエラーを表示させないためのもので、FALSEとは関係ないです。

labilion
質問者

お礼

再度ありがとうございます。 エラーを出さずに正しくTRUE/FALSEを返すにはどのように記述すれば良いのでしょうか? 現在のソースは以下です。 //ソース $url = 'http://*****/***.html'; if (fopen($url,'r')) { echo 'OK'; } else { echo 'NG'; } //上記を動かすと出るエラー Warning: fopen(http://*****/***.html): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/***/***.php on line ** ※動作だけなら@fopenで正しく動いてくれました。

回答No.1

file_existsは自サーバ内だけじゃないかと思います。 fopenして内容をチェックすれば良いのではないでしょうか。

labilion
質問者

お礼

ありがとうございます。 fopenで存在しないURLをチェックするとエラーが出ましたので @fopenにしたのですがこれでも大丈夫でしょうか?