2016-08-30 132 views
-1

我正在搜索多个网站来解决此问题。问题是我要求用户输入网站地址,并且像人们说永远不会信任用户输入。网址验证必须包含http或https

所以,可能的情形可以是这样的:

HTTPS或http://www.google.com

HTTPS或http://google.com

www.google.com

google.com

现在我想要的URL必须是这样的。 http或https // www.google.com

目前我有下面的代码,但它没有按预期工作。

$url = "www.google.com";  
if (preg_match("/\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url)) { 
     echo "URL is valid"; 
    } 
    else { 
     echo "URL is invalid"; 
    } 
+2

使用'parse_url':http://php.net/manual/en/func tion.parse-url.php –

+0

如果你能解释为什么那么它会很好。感谢downvoting – Ironic

+2

或者可能'FILTER_VALIDATE_URL'使用'filter_var' – RamRaider

回答

3

检查中提到,如果字符串的开头包含http其中还包括https,并检查所有的情况下,如果它是一个有效的网址:

if((strpos($url, 'http') === 0) && filter_var($url, FILTER_VALIDATE_URL)) { 
    echo "URL is valid"; 
} else { 
    echo "URL is invalid"; 
} 
+0

您的解决方案是正确的。我很愚蠢的检查正则表达式。它是如此容易。谢谢投票。 – Ironic

0

试试这个表达

/[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi 

将aceept你在上面

+0

我想只有一个条件是正确的(http://www.google.com)休息应该是无效的。 – Ironic

相关问题