(2003-2009) * @author Froxlor team (2010-) * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package Functions * */ /** * Returns whether a URL is in a correct format or not * * @param string URL to be tested * @return bool * @author Christian Hoffmann * @author Froxlor team (2010-) * */ function validateUrl($url) { global $idna_convert, $theme; if (strtolower(substr($url, 0, 7)) != "http://" && strtolower(substr($url, 0, 8)) != "https://" ) { $url = 'http://' . $url; } // needs converting try { $url = $idna_convert->encode($url); } catch (Exception $e) { return false; } $pattern = "/^https?:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\:[0-9]+)?\/?(.+)?$/i"; if (preg_match($pattern, $url)) { return true; } // not an fqdn if (strtolower(substr($url, 0, 7)) == "http://" || strtolower(substr($url, 0, 8)) == "https://" ) { if (strtolower(substr($url, 0, 7)) == "http://") { $ip = strtolower(substr($url, 7)); } if (strtolower(substr($url, 0, 8)) == "https://") { $ip = strtolower(substr($url, 8)); } $ip = substr($ip, 0, strpos($ip, '/')); // possible : in IP (when a port is given), #1173 // but only if there actually IS ONE if (strpos($ip, ':') !== false) { $ip = substr($ip, 0, strpos($ip, ':')); } if (validate_ip($ip, true) !== false) { return true; } else { return false; } } else { return false; } }