我正在使用CURL來執行HTTP請求。我回來是這樣的:如何在使用CURL檢索標題字符串後,在PHP中檢索單個標題字段值?
HTTP/1.1 200 OK
Date: Thu, 07 Apr 2011 15:52:33 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
我的問題是,我怎麼能可靠地獲取任何四個命名字段的值嗎?
現在我這樣做:
$name = 'Expires';
preg_match('/^'.$name.': ([^\r\n]*)[\r\n]*$/m', $headers, $matches);
這似乎是工作。我只是對我的正則表達式感到好奇,因爲這將會適用於我從服務器接收到的每一個格式良好的頭文件,或者如果有差異,它會中斷。我似乎無法找到對有效字符,換行符或回車符的具體限制,因此我不知道所有值是否都將遵循以下格式:
字段名後跟冒號,後跟空格,後跟非換行符,後面是換行符。
出於某種原因,然後我使用'm'修飾符它仍然留給我一個\ n在匹配的字符串的末尾。 – 2011-04-07 19:20:39
我的意思是在最後留下一個\ r。 – 2011-04-07 19:28:24
我現在可以測試的唯一方法是通過http://regex.larsolavtorvik.com/或其他一些在線regexp工具。然而,如果你真的不想匹配'\ r'和'\ n',那麼你的正則表達式的這個微小的修改就可以滿足你的需求'/:\ s([^ \ r \ n] *)[\ r \ n]?$/m'' – 2011-04-07 19:41:11