How to check validity of an URL

How to check validity of an URL.

1. Using Regex

if (ereg("^(http|https|ftp)\://[a-zA-Z0-9\.-]+\.[a-zA-Z0-9]{1,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\._\?\,\'/\\\+&%\$#\=~-])*$", $url)) {
echo 'URL Correct';
} else {
echo 'Bad URL';
}

This will validate URL with http, https and ftp schema.

2. Using fsockopen

$url = parse_url($url);
$conn = fsockopen($url['host'], 80);
if (!$conn) die('Cannot connect!');
fwrite($conn, "GET {$url['path']} HTTP/1.0\r\nHost: {$url['host']}\r\nConnection: close\r\n\r\n");
$header = fgets($conn);
if (preg_match('|HTTP/\S+\s+[2-3]\d\d|i', $header)) {
// HTTP response code 2xx - 3xx.
echo 'URL FOUND';
} else {
// Other
echo 'URL NOT FOUND';
}

3. Using cURL

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$http_code = (string)$info['http_code'];
if ($http_code{0} == 2 || $http_code{0} == 3 ) {
echo 'URL FOUND';
} else {
echo 'URL NOT FOUND';
}

This will check HTTP response code for the url.

No Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: