0

所以我有这个网站,人们可以在其中提交某些项目的 url,但我不知道如何验证提交的 url 不仅仅是一些废话!

Atm 我有这段代码:

if(filter_var('http://www.example.com/test.html', FILTER_VALIDATE_URL)) {
    echo 'this is URL';
} else {
    echo 'this is no url!';
}

但是这段代码很容易绕过,因为它只检查字符串中的“http”,并且用户将单独提交“主机”,所以我需要检查 $host 是否是有效的主机。

提前谢谢!你们真棒!

4

2 回答 2

0

这是一个解决您的问题的示例:

<?php
$url = "http://www.example.com/test.html";
if (preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url)) {
  echo "URL is valid";
}
else {
  echo "URL is invalid";
}
?>
于 2013-09-11T13:50:49.160 回答
0

给它发送一个 HTTP 请求怎么样?

function isValid($url) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_NOBODY, true); //make it a HEAD request
    curl_exec($curl);

    $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);

    return $statusCode == 200;
}

var_dump(isValid('http://www.google.co.uk')); // bool(true)
var_dump(isValid('some invalid URL')); // bool(false)
于 2013-09-11T13:48:39.537 回答