一連の CURL から返された http ヘッダーの各行をループして、1 つのヘッダーがいつ終了し、次のヘッダーがいつ開始されるかを検出しようとしています。httpヘッダーが空行で終了することは知っていますが、phpでこの改行を表すために使用される文字は何ですか? で試してみまし\n
たが、うまくいかないようです。私は確かに何か間違ったことをしている可能性があります。
ヘッダーを終了するために使用される改行を表すために使用される文字は?
これが私の既存のコードです:
$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
が私が照合していたはずのものであることが判明しました。非常に奇妙な。これがサイトごとに変わるのか、それともカールに設定されているのかはわかりません。これまでのところ、\r
私が試したすべてのサイトでそうです。
編集2:ドー。ヘッダーを行の配列に入れるために、 で展開したためだと思います\n
。だから、おそらく\r\n
今はただ\r
...
$c = explode("\n",$content);