簡體   English   中英

PHP,使用域擴展的url驗證

[英]PHP, url validation with domain extension

我一直在嘗試使用FILTER_VALIDATE_URL以及正則表達式驗證網址,但沒有運氣。

例如:

$url = "http://www.stackoverflow";

    if (preg_match("/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $url)) {
      echo "URL is valid";
    }
    else {
      echo "URL is invalid";
    }
        echo("$url is not a valid URL");
    }

以上將顯示有效的url,即使省略了域擴展名, FILTER_VALIDATE_URL

我想要的是僅在以下列格式輸入時驗證URL:

http://www.stackoverflow.com
https://www.stackoverflow.com
http://stackoverflow.com
https://stackoverflow.com

任何事情:

http://stackoverflow
https://stackoverflow
http://www.stackoverflow
https://www.stackoverflow

應該是無效的。

當然,它應該適用於任何類型的域擴展。

如果您想使用FILTER_VALIDATE_USE,根據文檔 ,您應該使用:

FILTER_FLAG_HOST_REQUIRED - 網址必須包含主機名(例如http://www.example.com

喜歡:

<?php
$url = "https://www.stackoverflow.com";

if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
    echo("$url is a valid URL");
} else {
    echo("$url is not a valid URL");
}
?>

這應該工作。 希望能幫助到你!

編輯:

代碼的結果:

stackoverflow.com不是有效的URL

http://stackoverflow.com是一個有效的URL

http://www.stackoverflow.com是有效的URL

ww.stackoverflow.com不是有效的URL

http:// stackoverflow是一個有效的URL

正如@mickmackusa所說,我刪除了正則表達式片段,如果你想要正則表達式,你可以使用:

使用正則表達式驗證url

要么:

URL驗證REGEX - URL僅對http://有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM