ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現の動作: HTTP ステータス コードの照合

PHP 正規表現の動作: HTTP ステータス コードの照合

WBOY
WBOYオリジナル
2023-06-23 09:33:461343ブラウズ

PHP 正規表現の実践: HTTP ステータス コードの照合

Web サイト開発において、HTTP ステータス コードは非常に重要な概念です。 HTTP プロトコルによれば、各 HTTP 応答には、クライアントに要求の処理結果を伝える 3 桁のステータス コードが含まれている必要があります。 PHP を使用して Web サイトを開発している場合、HTTP ステータス コードに一致する正規表現をマスターすることは有用なスキルです。

HTTP ステータス コードの分類

HTTP ステータス コードは、最初の桁に従って次の 5 つのカテゴリに分類されます。

  • 1xx: 情報ステータス コード。サーバーが受信しました リクエストは行われましたが、処理を完了するにはさらなるアクションが必要です。
  • 2xx: 成功ステータス コード。サーバーがリクエストを正常に処理したことを示します。
  • 3xx: リダイレクト ステータス コード。リクエストを完了するにはクライアントからのさらなる操作が必要であることを示します。
  • 4xx: クライアント エラー ステータス コード。クライアントから送信されたリクエストに問題があり、サーバーがリクエストを処理できないことを示します。
  • 5xx: サーバー エラー ステータス コード。サーバーがリクエストを処理したときにエラーが発生したことを示します。

この記事では、まずすべての HTTP ステータス コードをリストし、次に PHP 正規表現を使用してそれらを照合します。

HTTP ステータス コード リスト

すべての HTTP ステータス コードとその意味は次のとおりです。

  • 100 続行: クライアントはリクエストの送信を続行する必要があります。この暫定応答は、要求の一部がサーバーによって受信され、まだ拒否されていないことをクライアントに通知するために使用されます。リクエストの送信を続けると、リクエスト全体またはリクエストの別の部分が完了する場合があります。
  • 101 プロトコルの切り替え: サーバーはクライアントの要求を受信して​​理解し、プロトコルのアップグレード操作を完了しました。サーバーは、アップグレード ヘッダーを介して、別のプロトコルで通信するようにクライアントに通知します。
  • 200 OK: リクエストは成功し、リクエストで予期される応答ヘッダーまたはデータ本体がこの応答とともに返されます。
  • 201 作成されました: リクエストは成功し、サーバーは新しいリソースを作成しました。
  • 202 Accepted: サーバーはリクエストを受け入れましたが、まだ処理が完了していないため、成功は保証できません。通常は非同期処理に使用されます。
  • 203 非権限情報: サーバーはリクエストを正常に処理しましたが、返された情報は別のソースからのものである可能性があります。
  • 204 コンテンツなし: サーバーはリクエストを正常に処理しましたが、コンテンツを返しませんでした。
  • 205 コンテンツのリセット: サーバーはリクエストを正常に処理しましたが、コンテンツを返す必要はありません。
  • 206 部分コンテンツ: サーバーはリクエストの一部を正常に処理しました。返されたコンテンツは範囲リクエストのエンティティ コンテンツです。
  • 300 複数の選択肢: クライアントが要求したリソースは複数の場所で見つかる可能性があり、サーバーはクライアントが選択できるリソースのリストを返します。
  • 301 永久に移動されました: クライアントによって要求されたリソースは新しい場所に永久に移動され、サーバーはリダイレクト URL をクライアントに返します。
  • 302 見つかりました: クライアントによって要求されたリソースは一時的に新しい場所に移動され、サーバーはリダイレクトされた URL をクライアントに返します。
  • 303 See Other: クライアントによって要求されたリソースには別の URI があり、要求されたリソースを取得するには GET メソッドを使用する必要があります。
  • 304 未変更: クライアントは条件付きリクエストを送信し、サーバーはブラウザ キャッシュ内のリソースが引き続き使用できることをクライアントに伝えました。
  • 305 プロキシの使用: クライアントによって要求されたリソースには、プロキシ経由でアクセスする必要があります。
  • 307 一時リダイレクト: クライアントによって要求されたリソースは一時的に新しい場所に移動され、サーバーはリダイレクトされた URL をクライアントに返します。このリダイレクト方法では、HTTP リクエスト メソッドとメッセージ本文は変更されません。
  • 400 不正なリクエスト: リクエストに構文エラーがあるか、サーバーがリクエストを理解できません。
  • 401 権限がありません: リクエストにはユーザーの検証が必要です。
  • 402 支払いが必要です: このステータス コードは将来の使用のために予約されており、現在は使用されていませんが、電子マネーが将来使用される可能性があることを示します。このステータス コードは、将来の新しいデジタル通貨に対する適切なサーバー サポートを確保するために、デジタル通貨用に特別に設計されています。
  • 403 禁止: サーバーはリクエストを拒否しました。
  • 404 見つかりません: サーバーは要求されたリソースを見つけることができません。
  • 405 メソッドは許可されていません: クライアントによって要求された HTTP メソッドは許可されていません。
  • 406 受け入れられません: サーバーは、クライアントが要求したコンテンツ特性に基づいて要求を完了できません。
  • 407 プロキシ認証が必要: 要求者は承認にプロキシを使用する必要があります。
  • 408 リクエスト タイムアウト: リクエストがタイムアウトしました。
  • 409 競合: 要求されたリソースの現在の状態と競合するため、要求を完了できません。
  • 410 なくなりました: 要求されたリソースはサーバー上で利用できなくなりました。
  • 411 長さが必要です: クライアントはリクエストに Content-Length ヘッダーを設定しなかったため、サーバーはこのリクエストを処理できません。
  • 412 前提条件が失敗しました: サーバーは、リクエストのヘッダー フィールドで指定された 1 つ以上の前提条件を検証する際に満たすことができませんでした。
  • 413 ペイロードが大きすぎます: リクエスト エンティティが大きすぎるため、サーバーはそれを処理できません。
  • 414 URI が長すぎます: 要求された URI が長すぎるため、サーバーはそれを処理できません。
  • 415 サポートされていないメディア タイプ: サーバーは、リクエストに添付されたメディア フォーマットを処理できません。
  • 416 範囲が満足できません: クライアントによって要求された範囲が無効であるため、サーバーはそれを処理できません。
  • 417 期待に失敗しました: サーバーは Expect リクエスト ヘッダー情報を満たすことができません。
  • 421 誤ったリクエスト: このリクエストは、応答を生成できないサーバーに対するものです。これは、これらのリクエストがアクセスする必要があるリソースが汚染されているか、完全に公開されていない、またはローカル マシンでのみ利用可能であることが考えられます。これらの要因は、ネットワークに接続されている特定のクライアントにのみ適用されます。
  • 422 処理できないエンティティ: リクエストの形式は正しいですが、セマンティック エラーのため応答できません。
  • 423 ロック済み: 現在のリソースはロックされています。
  • 424 依存関係の失敗: 現在のリクエストは、前のリクエストとの競合により失敗しました。
  • 425 早すぎます: リソースをロードするために必要な条件が満たされるまで、リクエストを満たすことはできません。
  • 426 アップグレードが必要: クライアントは TLS/1.0 に切り替える必要があります。
  • 428 前提条件が必要です: このリクエストには有効な条件の前提条件が必要です。
  • 429 リクエストが多すぎます: リクエストが多すぎます。
  • 431 リクエスト ヘッダー フィールドが大きすぎます: リクエスト ヘッダーがサイズ制限を超えています。
  • 451 法的理由により利用できません: リクエストは処理されません。リクエストには禁止された情報が含まれている可能性があります。
  • 500 内部サーバー エラー: サーバーで不明なエラーが発生しました。
  • 501 未実装: サーバーはクライアントが要求した機能をサポートしていません。
  • 502 不正なゲートウェイ: ゲートウェイまたはプロキシとして機能するサーバーで、リクエストの実行中にエラーが発生しました。
  • 503 サービスを利用できません: サーバーは一時的にリクエストを処理できず、クライアントに Retry-After ヘッダーを返す可能性があります。
  • 504 ゲートウェイ タイムアウト: ゲートウェイまたはプロキシとして機能するサーバーは、要求の実行時に上流サーバーからの応答を時間内に受信できませんでした。
  • 505 HTTP バージョンがサポートされていません: サーバーは、リクエストで使用されている HTTP プロトコルのバージョンをサポートしていません。
  • 506 バリアントもネゴシエートします: サーバーに内部構成エラーがあり、処理中のリクエストが複数のネゴシエーション可能な応答を満たすことになります。
  • 507 ストレージが不十分です: サーバーはリクエストを完了するために必要なコンテンツを保存できません。
  • 508 ループが検出されました: サーバーは、リクエストの処理中に無限ループに入っていることを発見しました。
  • 510 拡張されていません: クライアントは応答をさらに拡張する必要がありますが、サーバーには対応するソリューションがありません。
  • 511 ネットワーク認証が必要です: クライアントはネットワーク リソースを使用するために認証を必要とします。

PHP 正規表現は HTTP ステータス コードと一致します

次に、PHP 正規表現を使用して HTTP ステータス コードと一致するようにしてみましょう。 PHP では、preg_match() 関数を使用して正規表現のマッチングを実装できます。以下は、HTTP ステータス コードと一致するサンプル コードです。

$status_code = '200'; // 要匹配的状态码
$pattern = '/^[1-5][0-9]{2}$/'; // HTTP状态码的正则表达式
if(preg_match($pattern, $status_code)) {
    echo '匹配成功!';
} else {
    echo '匹配失败!';
}

上記のコードでは、最初に一致するステータス コードを 200 として定義し、次に HTTP ステータス コードの正規表現を " として定義します。 /^ 1-5{2}$/”。この正規表現は 3 桁に一致できます。最初の桁は 1 ~ 5、残りの 2 桁は 0 ~ 9 である必要があります。最後に、マッチングに preg_match() 関数を使用する場合、戻り値が 1 の場合はマッチングが成功したことを意味し、戻り値が 0 の場合はマッチングが失敗したことを意味します。

複数の HTTP ステータス コードを照合する場合は、preg_match_all() 関数を使用できます。以下は、すべての HTTP ステータス コードに一致するサンプル コードです。

$status_codes = array('200', '404', '500'); // 要匹配的状态码数组
$pattern = '/^[1-5][0-9]{2}$/'; // HTTP状态码的正则表达式
foreach($status_codes as $status_code) {
    if(preg_match($pattern, $status_code)) {
        echo $status_code.' 匹配成功!'."
";
    } else {
        echo $status_code.' 匹配失败!'."
";
    }
}

上記のコードでは、まず一致するステータス コードの配列を定義し、次に foreach() を使用して配列をループします。ループ内では preg_match() 関数を使用してマッチングを実行し、戻り値に基づいてマッチング結果を出力します。

概要

HTTP ステータス コードは、Web サイト開発において非常に重要な概念です。場合によっては、正規表現を使用して HTTP ステータス コードを照合する必要があります。 PHP では、preg_match() 関数を使用して正規表現のマッチングを実装できます。この記事を通じて、HTTP ステータス コードと PHP 正規表現を照合するスキルを習得していただければ幸いです。

以上がPHP 正規表現の動作: HTTP ステータス コードの照合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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