Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php正在验证无效的url_Php - Fatal编程技术网

php正在验证无效的url

php正在验证无效的url,php,Php,我正在接收来自API fo的一些数据,但我无法控制这些数据。包含一个weblink字段,其中包含无效的URL。 在处理数据时,我尝试验证url,以查看是否应将其标记为链接 有些链接是通过http:或https:-来实现的,有些则不是,所以我正在检查这一点,看看是否应该添加它 某些数据已输入为不适用 我可以通过字符串比较手动检查这一点,但我不知道还有什么其他变体 下面是我正在使用的函数,它检查方案,然后进行验证。这将对其进行评估,然后进行验证 我如何检查它是否有效 function GetUrl(

我正在接收来自API fo的一些数据,但我无法控制这些数据。包含一个weblink字段,其中包含无效的URL。 在处理数据时,我尝试验证url,以查看是否应将其标记为链接

有些链接是通过http:或https:-来实现的,有些则不是,所以我正在检查这一点,看看是否应该添加它

某些数据已输入为不适用

我可以通过字符串比较手动检查这一点,但我不知道还有什么其他变体

下面是我正在使用的函数,它检查方案,然后进行验证。这将对其进行评估,然后进行验证

我如何检查它是否有效

function GetUrl($url, $ReturnBlankIfInvalid = false)
{
  if ($ret = parse_url($url)) 
  {
      if ( !isset($ret["scheme"]) )
      {
          $url = "http://{$url}";
      }
  }

  if ($ReturnBlankIfInvalid)
  {
      if (filter_var($url, FILTER_VALIDATE_URL) === FALSE)
        $url = "";
  }

  return $url;
}

验证是正确的,因为URL的“语法”是正确的

我认为您需要评估URL是否可调用。您可以使用curl并检查HTTP 200响应来完成此操作

$ch=curl\u init($url);
$rv=旋度执行($ch);
$httpCode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码);
卷曲关闭($ch);
echo($httpCode==200)?“耶”:“哦,不!”;

步骤1:定义“有效”。如果我想在我的机器上设置一个名为
n
的虚拟主机,那么
http://n/a
将是一个有效的URL。公平点-但您可以看到我的问题…您可以使用一些标志来验证它是否具有方案或类似内容,但老实说,我建议您使用类似于使用
解析URL的方法(
)然后检查结果是否具有
scheme
属性,以及
主机是否至少包含一个
,等等。