note 45224 added to ref.url

From: Date: Mon, 30 Aug 2004 12:59:20 +0000
Subject: note 45224 added to ref.url
Groups: php.notes 
Request: Send a blank email to php-notes+get-75676@lists.php.net to get a copy of this message
For people that want a nice script for validating their urls. I have found this method to be pretty accurate, currently using this method to validate over 10.000 links every day. It gives no stress or overhead to your server since all it does is open a socket... it will NOT retrieve the entire page. // Syntax: list($result, $http_response) = validate_url('url'); // // $result = 0 (url does NOT work), 1 (url works) or 2 (not sure) // $http_response = W3 standard http respons (i.e. HTTP/1.1 301 Moved Permanently) // function validate_url($link) { $url_parts = @parse_url( $link ); if(empty( $url_parts["host"])) { return array(0, "NO HOST"); } if(!empty( $url_parts["path"])) { $documentpath = $url_parts["path"]; } else { $documentpath = "/"; } if(!empty( $url_parts["query"])) $documentpath .= "?" . $url_parts["query"]; $host = $url_parts["host"]; $port = $url_parts["port"]; // Now (HTTP-)GET $documentpath at $host"; if(empty($port)) $port = "80"; $socket = @fsockopen( $host, $port, $errno, $errstr, 15 ); if(!$socket) { $http_response = ""; return array(0, "Could not resolve"); } else { fwrite ($socket, "GET ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n"); unset($http_response); $http_response = trim(fgets( $socket )); $result = 2; if(preg_match("# [23][0-9][0-9] #", $http_response)) $result = 1; elseif(preg_match("# [45][0-9][0-9] #", $http_response)) $result = 0; fclose( $socket ); return array($result, $http_response); } } list($result, $http_response) = validate_url("http://www.start.be"); echo "<p>Server replied '".$http_response."' wich is a "; switch($result) { case 0: echo "<font color=red>negative</font>"; break; case 1: echo "<font color=green>positive</font>"; break; case 2: echo "<font color=orange>weird</font>"; break; } echo "result</p>"; ---- Manual Page -- http://www.php.net/manual/en/ref.url.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+45224 Delete -- http://master.php.net/manage/user-notes.php?action=delete+45224&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+45224&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#75676) next »