出於測試目的,我想用PHP構建一個簡單的HTTP服務器。 我知道HTTP標頭在空行上以\ r \ n結尾,我想檢測該模式,以便知道我的服務器何時收到所有標頭並可以響應客戶端。PHP HTTP頭結束(或檢測CR LF)
即使我還可以模擬客戶端,像這樣:
$in = "HEAD/HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
我無法檢測到標題的末尾。我的思維邏輯必定存在問題。這裏是我的代碼至極嘗試檢測模式:
do {
// read client input
$input = socket_read($spawn, 1024, 1) or die("Could not read input\n");
if (preg_match ("/^[\r\n|\r|\n]/", $input)) {
echo "CRLF detected!!\n";
} else {
if (trim($input) != "") {
echo "NO CRLF in: ".trim($input)."\n";
}
}
} while (true);
我也曾嘗試:
if ($input == "\r\n"){
或
if (preg_match ("/[\r\n|\r|\n]{2,}/", $input))
和其他很多不同的組合,但沒有一個選項似乎檢測到指示標題結尾的\ r \ n。 任何幫助,非常感謝。