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

Chu*_*utt 3 php validation url filter-var

由于某些我无法理解的原因,FILTER_VALIDATE_URL表示以下网址有效:

http://ghjfgh

并非所有有效的URL都包含至少一个句点吗?我从未见过根据定义没有TDL的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;
?>
Run Code Online (Sandbox Code Playgroud)

Nan*_*nne 6

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