這個錯誤給了我幾個小時的痛苦。這是我正在做的簡化版本:這些情況都不符合get_headers()的結果
[01] $h = get_headers($url, 1);
[02] $resp_code = $h[0];
[03] $resp_code = strtolower($resp_code);
[04] $resp_code = str_replace(' ','',$resp_code);
[05] echo 'just before going in. $resp_code = ' . $resp_code . '<br/>';
[06] switch ($resp_code) {
[07] case 'http/1.1200ok':
[08] echo '200';
[09] break;
[10] case 'http/1.0301movedpermanently':
[11] echo '301';
[12] break;
[13] case 'http/1.0302movedtemporarily':
[14] echo '302';
[15] break;
[16] case 'http/1.0404notfound':
[17] echo '404';
[18] }
[19] echo 'just got out.';
我得到的輸出。嘗試不同的網址,是不同的,對於一些網址,它工作正常,對於一些它根本不輸出任何響應代碼!即使從第5行顯示的回顯中,您預計應該輸入其中一個case
,但它不會,並且下一個輸出來自第19行。
您可能想知道爲什麼我已將響應代碼轉換爲全部較低的和剝離的空間,這是爲了排除不同服務器發送的文本之間可能存在的細微差異。我不知道這是否會發生,這是爲了以防萬一,以免沮喪:(
它可能是字符編碼相關的?通貨膨脹/通貨緊縮?PHP中的錯誤?我的系統上的病毒?
任何幫助,將不勝感激。
get_headers的基礎上有一定的缺陷,請參閱:http://stackoverflow.com/questions/12781795/get-headers-inconsistency – Baba 2012-10-08 15:33:31