2016-08-30 129 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

相關問題