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中文網其他相關文章!