• ベストアンサー

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にしたのですがこれでも大丈夫でしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルの存在チェックとエンコード

    自分なりに調べてファイルの存在チェック後、filemtime順にソートを する処理を書いてみましたがいまいち自信がないので、ご教授お願いします。 後、エンコードがうまくいかないのか日本語を出力しても表示がされません。 ご指摘ご教授お願いします。 <html> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <?php //ファイルの存在チェック if (file_exists('hoge01.html')) { $page['hoge1.htm'] = filemtime('hoge01.html'); } if (file_exists('hoge02.html')) { $page['hoge2.htm'] = filemtime('hoge02.html'); } if (file_exists('hoge03.html')) { $page['hoge3.htm'] = filemtime('hoge03.html'); } //ファイルが空の場合の処理 if($page == false) { echo "ファイルが存在しません。"; } //ファイルが存在すればfilemtime順にソートの処理 else{ asort($page); foreach($page as $key => $value){ echo $key; echo "<br>"; echo "<hr>"; } } ?> </html>

    • 締切済み
    • PHP
  • HPの重複をチェック&そのURLが存在するかどうかチェックするソフトってありますか?

    2つフリーソフトを探しています 一つは多数あるURLの重複をチェックしてくれるソフトで もう一つはURLを入力して そのURLのページが存在するかどうかチェックするソフトです ご存じでしたら教えてください よろしくお願いします

  • 同サーバー内のファイルの存在確認ができません

    ※説明の為相対パスで書かせていただきます。 ↓本ファイルの設置ディレクトリ /usr/local/apache/htdocs/admin/check.php $img="/home/monky/www/monky.jp/img/1.jpg"; $chk=(file_exists($img))?TRUE:FALSE; ↑とするとエラーがでました。 このPHPとIMGファイルは以下のように、 /usr/local/apache/htdocs/admin/check.php /home/monky/www/monky.jp/img/1.jpg 階層が全然違いますが、同サーバー内です。 fopenやfile_get_contentsなどURLで指定すれば存在確認ができたのですが、動作が遅すぎなので、なんとかfile_existsで行いたいです。 この場合はどうすればうまくいくのでしょうか??

    • ベストアンサー
    • PHP
  • ファイルの取得について

    お世話になっております。 ただ今JSPにてファイルの存在チェックを行うものを作成しております。 localhost上では new File("test.txt").exists(); で”true”なのですが、 warファイルを作成後、SunOneに配備すると”false”になってしまいます。 test.txtは同じフォルダー上にあります。 String file_path = application.getRealPath("test.txt"); File test = new File(file_path); out.print(test.exists()); としても”false”になってしまいます。 どのように記述すれば”true”になるのでしょうか? お手数ですが、ご教授願います。

    • ベストアンサー
    • Java
  • web 上のファイルが存在するかチェックする方法

    php 5 を使用です。 自分のサーバーのファイルは file_exists($filename) でチェック出来ますが、 web 上のファイルが存在するか確認することは出来るのでしょうか? web 上のファイルというのは 自分のサーバーではないこういうものです。 http://www.example.com/images/pic01.jpg

    • ベストアンサー
    • PHP
  • is_fileでファイルが存在していてもfalse

    is_file関数を使って、多数のファイルの有無のチェックを行おうとしています。 ところが、実際に存在していてもfalseを返してきます。 同一サーバ内、別サーバー内も試してみましたが、結果は同じでした。 当然ですが、URLの間違いなどはありません。 まったく原因が思いつきません。 よろしくお願いします。 動作環境:windowsxp,php4.3.8

    • ベストアンサー
    • PHP
  • ファイル存在チェック

    日本語サイトと、英語サイトの行き来で: 日本語サイト: http://www.hoge.com/sample/sample.html 英語サイト: http://www.en.hoge.com/sample/sample.html 英語サイトのsampleディレクトリに、日本語サイトのsampleディレクトリと同一ファイルが存在した場合のみ、日本語サイトのそのページに<a href="">English</a>のリンクを表示させたく、 下記の様なPHPを書きました。 <?php $url_en = 'http://www.en.hoge.com'; $current_dir = basename(dirname($url)) ; $filename = basename($_SERVER["PHP_SELF"]); if (file_exists($url_en.'/'.$current_dir.'/'.$filename)) { echo ($url_en.'/'.$current_dir.'/'.$filename); } ?> ファイルが存在するので、echo の部分を出力してくれても良さそうな気がするのですが、 表示されません。 また、echo の部分を<a href=""></a>に入れるには、どの様に書いたら宜しいでしょうか?

    • ベストアンサー
    • PHP
  • CekePHPでfile_exists関数を使う

    CakePHP Ver1.3.6で開発をしています。 アクションの中で、画像の存在判定にfile_exists関数を使ったのですが、 2バイトのファイル名のファイルの場合、存在するファイルがfalseになって しまいます。 対象のファイルが存在するときに、 if (file_exists('img/漢字.jpg')) echo 'あります'; else echo 'ありません'; if (file_exists('img/filename.jpg')) echo 'あります'; else echo 'ありません'; このとき、前者は’ありません’、後者は’あります’と表示されます。 app/webrootフォルダにtest.phpを作り、その中で同じ判定をすると、 両方とも’あります’と表示されます。 なぜアクションの中に記述したときのみ、2バイトファイル名を正しく 判定できないのでしょうか?

    • ベストアンサー
    • PHP
  • 別のサーバにあるファイルの存在確認

    PHPで、別のサーバーにあるファイルが存在するかしないか確認できる方法、もしくはファンクションなどありますでしょうか? is_file, file_exists を試しましたが、無理でした。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 別サーバにあるファイル存在チェック

    前回の続き的になりますが、サーバは、allow_url_fopen=off の環境です。 色々なサイトを調べてみて、下記コードを発見して、自分なりに修正しましたが、 とにかく重くて仕方ありません。いらないものがあるのでしょうか。 $url = 'http://'.$_SERVER["HTTP_HOST"].$_SERVER['SCRIPT_NAME']; $link_en = (str_replace("www", "www.en", 'http://'.$_SERVER["HTTP_HOST"].$_SERVER['SCRIPT_NAME'] )); function url_exists($link_en) { $arr = parse_url($link_en); $fp = fsockopen($arr['host'], 80); if ($fp == FALSE) return FALSE; $out = ''; $out .= "GET {$arr['path']} HTTP/1.1\r\n"; $out .= "Host: {$arr['host']}\r\n"; $out .= "\r\n"; fwrite($fp, $out); //HTTPコール $res = fgets($fp); //HTTPレスポンス $n = preg_match("/^(HTTP\/[0-9\.]+) ([0-9]+) (.+)/i", $res, $arr); if ($n == 0) return FALSE; $num = $arr[2]; if ($num >= 200 && $num < 400) return TRUE; //HTTP 200-399 ならOK return FALSE; } if (! url_exists($link_en)) { $url_en = "English"; } else { $url_en = '<a href="'.$link_en.'">English</a>'; }

    • ベストアンサー
    • PHP
px-5vの実寸印刷について
このQ&Aのポイント
  • photoshopで275mm×380mm、300d/iの画像データを作成しました。上記のデータをA3の用紙に実寸で印刷したいです。
  • 印刷プロパティの設定方法を教えてください。
  • EPSON社製品の中でもpx-5vについての質問です。
回答を見る