Return to Snippet

Revision: 42958
at March 14, 2011 07:34 by peckham


Initial Code
<?php

function isValidURL($value) {
	
	$value = trim($value);
	$validhost = true;
	
	if (strpos($value, 'http://') === false && strpos($value, 'https://') === false) {
		$value = 'http://'.$value;
	}
	
	//first check with php's FILTER_VALIDATE_URL
	if (filter_var($value, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === false) {
		$validhost = false;
	} else {
		//not all invalid URLs are caught by FILTER_VALIDATE_URL
		//use our own mechanism
		
		$host = parse_url($value, PHP_URL_HOST);
		$dotcount = substr_count($host, '.');
		
		//the host should contain at least one dot
		if ($dotcount > 0) {
			//if the host contains one dot
			if ($dotcount == 1) {
				//and it start with www.
				if (strpos($host, 'www.') === 0) {
					//there is no top level domain, so it is invalid
					$validhost = false;
				}
			} else {
				//the host contains multiple dots
				if (strpos($host, '..') !== false) {
					//dots can't be next to each other, so it is invalid
					$validhost = false;
				}
			}
		} else {
			//no dots, so it is invalid
			$validhost = false;
		}
	}
	
	//return false if host is invalid
	//otherwise return true
	return $validhost;
}
	
?>

Initial URL


Initial Description
This function can be used to validate an URL

Initial Title
PHP URL validation

Initial Tags
url, php, validation

Initial Language
PHP