首頁 >後端開發 >php教程 >PHP正規表示式實戰:符合HTTP狀態碼

PHP正規表示式實戰:符合HTTP狀態碼

WBOY
WBOY原創
2023-06-23 09:33:461374瀏覽

PHP正規表示式實戰:符合HTTP狀態碼

在網站開發中,HTTP狀態碼是一個很重要的概念。根據HTTP協定規定,每個HTTP回應都應該包含一個3位數的狀態碼,用於告訴客戶端請求的處理結果。如果你正在使用PHP開發網站,那麼掌握正規表示式來符合HTTP狀態碼是很有用的技能。

HTTP狀態碼的分類

HTTP狀態碼依照首位數字分成以下5類:

  • 1xx:資訊性狀態碼,表示伺服器已經接收了請求,但是需要進一步的操作才能完成處理。
  • 2xx:成功狀態碼,表示伺服器已經成功處理了請求。
  • 3xx:重定向狀態碼,表示需要客戶端進一步操作才能完成請求。
  • 4xx:客戶端錯誤狀態碼,表示客戶端發送的請求有問題,導致伺服器無法處理。
  • 5xx:伺服器錯誤狀態碼,表示伺服器在處理請求時出現了錯誤。

在這篇文章中,我們會先列出所有的HTTP狀態碼,然後透過PHP正規表示式來符合它們。

HTTP狀態碼清單

以下是所有的HTTP狀態碼及其意義:

  • 100 Continue:客戶端應繼續發送請求。這個臨時回應是用來通知客戶端它的部分請求已經被伺服器接收,且仍未被拒絕。繼續發送請求可能完成整個請求或另外一部分請求。
  • 101 Switching Protocols:伺服器已經收到並且了解客戶端的請求,完成協定升級操作。伺服器將透過Upgrade資訊頭通知客戶端在另一個協定上進行通訊。
  • 200 OK:請求已經成功,請求所希望的回應頭或資料體將隨此回應傳回。
  • 201 Created:請求成功且伺服器建立了新的資源。
  • 202 Accepted:伺服器已經接受了請求,但是還未處理完成,不能保證一定成功。一般用於非同步處理。
  • 203 Non-Authoritative Information:伺服器已經成功處理了請求,但是傳回的資訊可能來自另一個來源。
  • 204 No Content:伺服器成功處理了請求,但沒有回傳任何內容。
  • 205 Reset Content:伺服器成功處理了請求,但不需要傳回任何內容。
  • 206 Partial Content:伺服器成功處理了部分請求,傳回的內容是範圍請求的實體內容。
  • 300 Multiple Choices:客戶端請求的資源可以在多個位置找到,伺服器傳回一個資源清單以供客戶端選擇。
  • 301 Moved Permanently:客戶端請求的資源已經永久地移動到了一個新的位置,伺服器傳回一個重定向的URL給客戶端。
  • 302 Found:客戶端請求的資源已經暫時移動到了一個新的位置,伺服器傳回一個重定向的URL給客戶端。
  • 303 See Other:客戶端請求的資源存在另一個URI,應使用GET方法定向取得請求的資源。
  • 304 Not Modified:客戶端發送了一個帶有條件的請求,伺服器告訴客戶端,瀏覽器快取中的資源可以繼續使用。
  • 305 Use Proxy:客戶端請求的資源必須透過代理才能存取。
  • 307 Temporary Redirect:客戶端請求的資源已經暫時移動到了一個新的位置,伺服器傳回一個重定向的URL給客戶端。這種重定向方式不會改變HTTP請求方法和訊息體。
  • 400 Bad Request:請求有語法錯誤或是請求無法被伺服器理解。
  • 401 Unauthorized:請求需要使用者驗證。
  • 402 Payment Required:該狀態碼被保留以便未來使用,預示將來可能會使用電子貨幣、儘管目前並未使用。此狀態碼是專門為數位貨幣設計的,以便未來可以確保使用新的數位貨幣時具有充足的伺服器支援。
  • 403 Forbidden:伺服器拒絕請求。
  • 404 Not Found:伺服器找不到請求的資源。
  • 405 Method Not Allowed:客戶端請求的HTTP方法不被允許。
  • 406 Not Acceptable:伺服器無法根據客戶端所要求的內容特性完成請求。
  • 407 Proxy Authentication Required:請求者應使用代理進行授權。
  • 408 Request Timeout:請求逾時。
  • 409 Conflict:由於和被要求的資源的當前狀態之間存在衝突,請求無法完成。
  • 410 Gone:被要求的資源在伺服器上已經不再可用。
  • 411 Length Required:客戶端沒有在請求中設定Content-Length頭,伺服器無法處理此請求。
  • 412 Precondition Failed:伺服器在驗證在請求的頭字段中給出先決條件時,沒能滿足其中的一個或多個。
  • 413 Payload Too Large:請求實體過大,伺服器無法處理。
  • 414 URI Too Long:請求的URI過長,伺服器無法處理。
  • 415 Unsupported Media Type:伺服器無法處理請求附帶的媒體格式。
  • 416 Range Not Satisfiable:客戶端請求的範圍無效,伺服器無法處理。
  • 417 Expectation Failed:伺服器無法滿足Expect的請求頭資訊。
  • 421 Misdirected Request:該請求針對的是無法產生回應的伺服器。這可以是因為這些請求需要存取的資源被污染或未完全發布,或僅在本機上可用,而這些因素僅適用於連接到其網路的特定用戶端。
  • 422 Unprocessable Entity:請求格式正確,但由於含有語意錯誤,無法回應。
  • 423 Locked:目前資源被鎖定。
  • 424 Failed Dependency:由於先前的請求發生衝突,導致目前請求失敗。
  • 425 Too Early:在載入資源所需的條件達成之前,無法滿足該請求。
  • 426 Upgrade Required:客戶端應切換到TLS/1.0。
  • 428 Precondition Required:該請求需要一個有效的條件前提。
  • 429 Too Many Requests:請求過多。
  • 431 Request Header Fields Too Large:請求頭超出大小限制。
  • 451 Unavailable For Legal Reasons:該請求不應當被處理,請求可能包含違禁訊息。
  • 500 Internal Server Error:伺服器遇到了一個未知的錯誤。
  • 501 Not Implemented:伺服器不支援客戶端所要求的功能。
  • 502 Bad Gateway:伺服器作為網關或代理在執行請求時遇到了錯誤。
  • 503 Service Unavailable:伺服器暫時無法處理請求,可以傳回一個Retry-After頭資訊給客戶端。
  • 504 Gateway Timeout:伺服器作為網關或代理在執行請求時,未能及時從上游伺服器接收回應。
  • 505 HTTP Version Not Supported:伺服器不支援請求中所使用的HTTP協定版本。
  • 506 Variant Also Negotiates:伺服器有一個內部設定錯誤,導致正在處理的請求滿足多個可協商的回應。
  • 507 Insufficient Storage:伺服器無法儲存完成請求所必須的內容。
  • 508 Loop Detected:伺服器在處理請求時發現自己陷入了無限循環。
  • 510 Not Extended:客戶端需要對回應進行進一步擴展,伺服器沒有對應的方案。
  • 511 Network Authentication Required:客戶端需要進行驗證才能使用網路資源。

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,其餘兩位數字可以為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狀態碼是網站開發中很重要的概念。有時候,我們需要透過正規表示式來符合HTTP狀態碼。在PHP中,我們可以使用preg_match()函數來實作正規表示式的匹配。希望透過本文,你能夠掌握PHP正規表示式符合HTTP狀態碼的技巧。

以上是PHP正規表示式實戰:符合HTTP狀態碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn