CURLから返された一連のCURRの各行をループして、1つのヘッダーが終了し、次のヘッダーが始まるときを検出しようとしています。私はhttpヘッダが空行で終了することを知っていますが、PHPではこの改行を表すためにどの文字が使用されていますか?私は\n
で試しましたが、うまくいかないようです。私は確かに何か間違っている可能性があります。PHPとHTTPヘッダー改行:どのキャラクターを使って表現しましたか?
ヘッダーの終了に使用される改行を表す文字は何ですか? \r
は、私が上に一致されているべきものであることが判明 -解決
$redirect = '';
$regs = '';
foreach ($curl_response as $line)
{
if ($line != "\n")
{ # line is not a linebreak, so we're still processing a header block
if (preg_match("(HTTP/[0-9]\.[0-9] [0-9]{3} .*)",$line))
{ # line is the status code
# highlight the outputted line
$output .= "<b style='background: yellow;'>$line</b>";
}
elseif (preg_match("/^Location: (.*)$/m",$line,$regs))
{ # the line is a location header, so grab the location being redirected to
# highlight the outputted line
$output .= "<b style='background: purple; color: white;'>$line</b>";
$redirect = $regs[1];
}
else
{ # some other header, record to output
$output .= $line;
}
}
else
{ # we've reached a line break, so we're getting to a new block of redirects
$output .= "\nreached line break\n";
if ($redirect != '')
{ # if we recorded a redirect above, append it to output
$output .= "\n\nRedirecting to $redirect\n\n";
$redirect = '';
}
}
}
echo $output;
:
は、ここに私の既存のコードです。非常に奇妙な。これがサイトごとに変更されるかどうか、またはそれがカールのセットであるかどうかは不明です。これまで私が試したすべてのサイトの\r
です。
編集2:Doh。ヘッダーを一連の行に入れるために、私は\n
で展開したからだと思います。だから、おそらくどの\r\n
はそれらにも有効な終端に空行ですとあなたが、また「の\ r \ n」と「\ rを」をチェックする必要があり、今ちょうど\r
...
$c = explode("\n",$content);