Well, technically, any URI that starts with a scheme (for example http://) and contains valid URI characters after it is valid according to the official URI specification in RFC 3986 :
URI , 3.1, . , URI , .
, , , - , . filter_var FILTER_VALIDATE_URL... , - URL, ?
if (strpos($url, 'http://') === 0
|| strpos($url, 'ftp://') === 0
|| strpos($url, 'telnet://') === 0
) {
// it a valid URL!
}