为什么FILTER_VALIDATE_URL认为这是一个有效的URL


Why does FILTER_VALIDATE_URL consider this to be a valid URL?

由于某些我不理解的原因,FILTER_VALIDATE_URL说以下URL是有效的:

http://ghjfgh

不是所有有效的url都包含至少一个句点吗?我从来没有见过一个没有定义的TDL。为什么PHP说它是有效的呢?

下面是代码。您可以自己在phpfiddle.org上快速运行它:

<?php
$URL = "http://ghjfgh";
    if($URL != "" && !filter_var($URL, FILTER_VALIDATE_URL)) {
        $error = "Please enter a valid URL";
    } else {
        $error = "All good";
    }
echo $error;
?>

它根据RFC 2396进行过滤,而http://ghjfgh根据该规范是有效的。一个简单的例子是http://localhost,它显然是有效的(正如@johnconde在评论中指出的)