这个错误给了我几个小时的痛苦。这是我正在做的简化版本:这些情况都不符合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