Функция проверки ссылок
На днях пришлось написать мне функцию проверки ссылок для своего портала. Спешу поделиться с Вами...
🕛 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 (если ссылка битая).