ホームページ  >  記事  >  バックエンド開発  >  PHP で URL の 404 エラーをテストするにはどうすればよいですか?

PHP で URL の 404 エラーをテストするにはどうすればよいですか?

PHPz
PHPzオリジナル
2024-08-28 11:33:53414ブラウズ

How to Test a URL for 404 error in PHP?

PHP: PHP (ハイパーテキスト プリプロセッサ) は、Web 開発用に特別に設計された、広く使用されているオープンソースのサーバー側スクリプト言語です。元々は 1994 年に Rasmus Lerdorf によって作成され、それ以来、世界中の何百万もの開発者によって使用される強力な言語に進化しました。

PHP は主に動的な Web ページや Web アプリケーションを開発するために使用されます。これにより、開発者は HTML 内に PHP コードを埋め込むことができ、サーバー側のロジックとプレゼンテーション層を簡単に混合できるようになります。 PHP スクリプトはサーバー上で実行され、結果の HTML がクライアントのブラウザーに送信されます。

PHP で URL の 404 エラーをテストするには、さまざまな方法があります。以下にいくつかの代替方法を示します。

  • file_get_contents の使用

  • stream_context_create での get_headers と strpos の使用

  • CURLOPT_NOBODY でのcurl_execの使用

file_get_contents を使用して、PHP で URL の 404 エラーをテストする

リーリー

このアプローチでは、isUrlValid 関数は URL をパラメータとして受け取ります。これにより、ignore_errors が true に設定されたストリーム コンテキストが作成され、URL コンテンツの取得中に file_get_contents で発生する可能性のあるエラーが抑制されます。

次に、file_get_contents 関数を使用して URL のコンテンツを取得し、ストリーム コンテキストを 3 番目の引数として渡します。この関数は内容を文字列として返します。

応答ヘッダーは $http_response_header 変数に保存され、file_get_contents によって最後の HTTP リクエストのヘッダーが自動的に設定されます。

関数はヘッダーを反復処理し、stripos (大文字と小文字を区別しない検索) を使用してヘッダーに文字列「HTTP/1.1 404」が含まれているかどうかを確認します。 404 応答コードを含むヘッダーが見つかった場合は、URL が無効であるか、404 エラーを返し、関数は false を返します。

ヘッダーに 404 応答コードが見つからない場合、関数は true を返し、URL が有効であることを示します。

「http://example.com」をテストする URL に置き換えることができます。 file_get_contents は特定のサーバー構成によって制限される場合があるので、ご使用の環境で許可されていることを確認してください。

stream_context_create での get_headers と strpos の使用

ここでは、get_headers と strpos を stream_context_create で使用して、PHP で URL の 404 エラーをテストする方法について詳しく説明します:

<?php
   function isUrlValid($url) {
      // Disable error reporting for file_get_contents
      $context = stream_context_create(['http' => ['ignore_errors' => true]]);
      // Fetch the URL content
      $content = file_get_contents($url, false, $context);
      // Get the response headers
      $headers = $http_response_header;
      // Check if the response code contains "404"
      foreach ($headers as $header) {
         if (stripos($header, 'HTTP/1.1 404') !== false) {
            return false; // URL is invalid or returns a 404 error
         }
      }
      return true; // URL is valid
   }
   // Usage
   $url = "http://example.com";
   if (isUrlValid($url)) {
      echo "URL is valid.";
   } else {
      echo "URL is invalid or returns a 404 error.";
   }
?>

このアプローチでは、isUrlValid 関数は URL をパラメータとして受け取ります。これは、オプションignore_errorsをtrueに設定してstream_context_createを使用してストリームコンテキストを作成します。このコンテキストは、URL ヘッダーの取得中に発生したエラーを無視するために使用されます。

次に、URL とストリーム コンテキストをパラメータとして get_headers 関数が呼び出されます。 URL の応答ヘッダーを含む配列を返します。

関数は、ヘッダー配列 ($headers[0]) の最初の要素をチェックし、strpos を使用してヘッダー内の文字列「404」を検索します。文字列「404」が見つかった場合は、URL が無効であるか、404 エラーを返し、関数は false を返します。

ヘッダーに文字列「404」が見つからない場合、関数は true を返し、URL が有効であることを示します。

「http://example.com」をテストする URL に置き換えることができます。 get_headers 関数と stream_context_create 関数が PHP 構成で有効になっていることを確認してください。

CURLOPT_NOBODY でのcurl_execの使用

ここでは、CURLOPT_NOBODY オプションを指定してcurl_execを使用して、PHP で URL の 404 エラーをテストする方法について詳しく説明します。

<?php
   function isUrlValid($url) {
      // Create a stream context with "ignore_errors" set to true
      $context = stream_context_create(['http' => ['ignore_errors' => true]]);
      // Fetch the URL headers
      $headers = get_headers($url, 0, $context);
      // Check if the response code contains "404"
      if (strpos($headers[0], '404') !== false) {
         return false; // URL is invalid or returns a 404 error
      }
      return true; // URL is valid
   }
   // Usage
   $url = "http://example.com";
   if (isUrlValid($url)) {
      echo "URL is valid.";
   } else {
      echo "URL is invalid or returns a 404 error.";
   }
?>

このアプローチでは、isUrlValid 関数は URL をパラメータとして受け取ります。 URL を指定したcurl_initを使用して、cURLセッションを初期化します。

curl_setopt 関数は、CURLOPT_NOBODY オプションを true に設定するために使用されます。これにより、GET リクエストの代わりに HEAD リクエストが送信されます。この方法では、応答本文全体ではなく、応答ヘッダーのみが取得されます。

CURLOPT_RETURTRANSFER オプションは true に設定され、応答が文字列として返されるようにします。

次に、curl_exec が呼び出され、cURL リクエストが実行されます。

リクエストが実行された後、curl_getinfo を使用して、CURLINFO_HTTP_CODE オプションを使用して cURL セッションから HTTP レスポンス コードを取得します。

最後に、curl_close が呼び出され、cURL セッションが閉じられます。

次に、関数は応答コードが 404 に等しくないかどうかを確認します。応答コードが 404 でない場合は、URL が有効であることを意味し、関数は true を返します。それ以外の場合は、URL が無効であることを示す false を返すか、404 エラーを返します。

「http://example.com」をテストする URL に置き換えることができます。このアプローチを機能させるには、PHP 構成で cURL 拡張機能が有効になっていることを確認してください。

結論

3 つの方法はすべて、PHP で URL の 404 エラーをテストする方法を提供します。これらにはすべて長所と短所があり、選択は特定の要件とプロジェクトで利用可能なライブラリによって異なります。ニーズに最適な方法を選択できます。

以上がPHP で URL の 404 エラーをテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。