我正在处理一个代码片段,需要验证URL以确保数据发送到正确的URL。为此,我使用filter_var()
函数。
在测试时,我开始遇到问题,这是我的代码;
<?php
function post($webLink){
$url = filter_var($webLink, FILTER_SANITIZE_URL);
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo 'Correct';
}
else {
echo 'Please check your url.';
}
}
post('h://www.google.com');
?>
很多无效的链接被验证为正确的URL,包括当前链接。
得到验证的链接有:
ht1tp://www.google.com
h://ww.google.com
http://www.google.
http://www.google.343
我不相信这是函数验证这些链接是否正确,我认为我的if (filter_var($url, FILTER_VALIDATE_URL))
代码行存在问题。请告诉我如何正确使用它。谢谢。
FILTER_VALIDATE_URL
的说明吗?http://php.net/manual/en/filter.filters.validate.php - u_muldercheckdnsrr()
的东西。http://php.net/manual/en/function.checkdnsrr.php - 即使如此,我认为它也无法处理新的UTF-8域名。 - CD001parse_url()
。它可以解析出协议/方案,以便您确保它是 http 或 https。 - gen_Erichttp://com.google
是一个有效的URL,只是这么说。 - gen_EricFILTER_VALIDATE_URL
不是你要找的,那么“valid”是什么意思?不是一个4XX的响应吗? - HPierce