|
|
|
| Ответ 005 на задачу N 13.
С условиями задачи можно ознакомится по ссылке.
<?php
function RemoteFileSize($url='http://ya.ru/',$size_ext='Kb',$scale=2,$host=80) {
$in=0;
// обрабатываем путь, на всякий случай.
$url = trim(htmlspecialchars($url));
// получаем www-адрес (имя хоста) из url
preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $matches);
//
$host = $matches[2];
//
$file = strrchr($url,'/');
//
$port=80;
//
$fp = fsockopen($host, $port, $errno, $errstr, 30);
//
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
//
$out = "GET $file HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\r\n";
$out .= "Connection: Close\r\n\r\n";
//
fwrite($fp, $out);
$i=0;
//
while ($i<7) {
$array_headers[]= fgets($fp, 128);
$i++;
}
fclose($fp);
//
if(!stristr($array_headers[6],'Content-Length')) exit("HTML File!");
//
$filesize = explode(" ",$array_headers[6]);
//
switch($size_ext) {
case 'Kb':
$in = 1024;
break;
case 'Mb':
$in = 1048576;
break;
case 'Gb':
$in = 4096;
break;
}
$size = bcdiv(trim($filesize[1]),$in,$scale);
// возвращаем размер в мб
return($size.' '.$size_ext);
}
}
echo RemoteFileSize("http://www.gg/foto.zip","Kb",2);
?>
|
http://www.softtime.ru/info/task.php?id_article=83 | |
|
|
|
|
|
|
|
для: SoftTime
(21.03.2006 в 18:26)
| | Хм... при запросе
echo RemoteFileSize("http://www.softtime.ru/files/whois.zip","Kb",2);
|
Получил ответ "HTML File!" и больше ничего. Кроме того, зря расчитываете, что HTTP-заголовков будет меньше семи (например в случае http://www.softtime.ru/files/whois.zip их девять)
и Content-Length может в эту семёрку не попасть. Лучше ориентироваться на лишний перевод строки между HTTP-заголовками и телом HTTP-ответа. | |
|
|
|