[PHP-users 30874] Re: PHP4.xでリモートファイルのファイルサイズ取得
Paul Takenaka
a.p.takenaka @ gmail.com
2006年 12月 4日 (月) 15:02:55 JST
竹中です。
伊東さん、すばやいご回答をありがとうございます。
ご提示のページに掲載されているスクリプトの1つがPHP 4.xで使えることを確認致しました。
これでうまくいきそうです。どうもありがとうございます。
参考までに、実際に動作を確認したコードを下記に書いておきます。
function getHeadersPHP4($url, $format = 0, $user = '', $pass = '',
$referer = '')
/* PHP4.xで getHeaders() をエミュレートする
*/
{
if (!empty($user)) {
$authentification = base64_encode($user.':'.$pass);
$authLine = "Authorization: Basic $authentification\r\n";
}
if (!empty($referer))
$refererLine = "Referer: $referer\r\n";
$urlInfo=parse_url($url);
$port = isset($urlInfo['port']) ? $urlInfo['port'] : 80;
$fp = fsockopen($urlInfo['host'], $port, $errno, $errstr, 30);
if ($fp) {
$head = "GET ".@$urlInfo['path']."?".@$urlInfo['query'].
" HTTP/1.0\r\n";
if (!empty($urlInfo['port'])) {
$head .= "Host: ".@$urlInfo['host'].":".$urlInfo['port'].
"\r\n";
} else
$head .= "Host: ".@$urlInfo['host']."\r\n";
$head .= "Connection: Close\r\n";
$head .= "Accept: */*\r\n";
$head .= $refererLine;
$head .= $authLine;
$head .= "\r\n";
fputs($fp, $head);
while (!feof($fp) or ($eoHeader == TRUE)) {
if($header=fgets($fp, 1024)) {
if ($header == "\r\n") {
$eoHeader = TRUE;
break;
} else
$header = trim($header);
if($format == 1) {
$key = array_shift(explode(':', $header));
if($key == $header)
$headers[] = $header;
else
$headers[$key] = substr($header, strlen($key) + 2);
unset($key);
} else
$headers[] = $header;
}
}
return $headers;
} else
return FALSE;
}
--
tak / Akikazu Paul Takenaka
a.p.takenaka @ gmail.com
PHP-users メーリングリストの案内