Функция проверки ссылок
На днях пришлось написать мне функцию проверки ссылок для своего портала. Спешу поделиться с Вами...
🕛 06.12.2006, 13:49
function url_valid($url)
{
if(!ereg("^<a href="http://" target="_blank">http://</a>",$url))
$url="http://".$url;
$urlarray = parse_url($url);
if (!$urlarray[port]) {
if ($urlarray[scheme] == 'http') { $urlarray[port] = 80; }
elseif ($urlarray[scheme] == 'https') { $urlarray[port] = 443; }
elseif ($urlarray[scheme] == 'ftp') { $urlarray[port] = 21; }
}
if (!$urlarray[path]) { $urlarray[path] = '/'; }
$errno="";
$errstr="";
$fp = @fsockopen ($urlarray[host].'.', $urlarray[port], &$errno, &$errstr , 10);
$sstatus = "ok";
if (!$fp)
return false;
$req=sprintf( "head %s http/1.0\r\nhost: %s\r\n\r\n", $urlarray[path], $urlarray[host]);
fputs( $fp, $req );
while (!feof($fp))
{
$line = fgets($fp,1000);
if( eregi( "http/1.(.) ([0-9]*) (.*)", $line, $parts ) )
{
if( $parts[2] < "400" )
{
fclose($fp);
return true;
}
else
{
fclose($fp);
return false;
}
}
}
fclose($fp);
return false;
}
Результатом выполнения данной функции будет либо значение true (если ссылка рабочая) либо значение flase (если ссылка битая).