【问题标题】:Best way to validate user input URL (see if URL exists) [duplicate]验证用户输入 URL 的最佳方法(查看 URL 是否存在)[重复]
【发布时间】:2014-04-21 05:12:04
【问题描述】:

在 PHP 中查看 URL 是否存在的最佳方法是什么(Url 由用户键入,因此可能不是正确的 URL 格式)。我上网查了一下,这个比较难找。

【问题讨论】:

  • 您要检查有效格式的网址吗?
  • 我想检查格式是否正确,然后检查 url 是否确实存在 - 这可以通过使用一个 php 函数来完成,还是应该分别使用两个?
  • IMO 无论如何,您最好只测试 url。如果它失败了,一个潜在的失败原因是因为它是一个格式错误的 url
  • 如果您想检查有效的 url/验证 url 和/或使用类似 curl 的链接是否有效/有效,则可能是 parse_urlfilter_var w/FILTER_VALIDATE_URL

标签: php validation url


【解决方案1】:

这里你只需要检查 URL 是否存在。仅存在有效的 URL 格式。试试这段代码,

<?php
 $url = 'http://www.example.com';
 $array = get_headers($url);
 $string = $array[0];
 if((strpos($string,"200"))||(strpos($string,"302")))
{
  echo 'url exists';
}
else
 {
    echo 'url does not exist';
}
?>

参考:http://us3.php.net/manual/en/function.get-headers.php

【讨论】:

  • 对于有效的 url,不仅仅是200get_headers 也会在错误时返回 false。
  • 我对此进行了测试,但它似乎不起作用(即使使用http://www.facebook.com)编辑:它显然需要有 https。
  • @user3353408 这就是为什么我说200 并不总是有效的,你会得到302 代码,它是Found,它本质上是重定向代码,因为有一个https 版本。如果您要使用curl,您可以使用“跟随重定向”来检查结束页面是否有效。
  • @Class 答案已编辑。现在它适用于 http 和 https
【解决方案2】:

我会考虑对他们键入的 URL 执行 AJAX 获取请求,并检查是否返回了 http 错误消息(例如 404)。

Jquery 使得 ajax 调用变得非常简单,实际上可能不需要测试 404 消息,它只会失败并运行错误函数。 https://api.jquery.com/jQuery.ajax/

【讨论】:

  • 我认为 OP 想要一个 PHP 版本而不是 JS/jquery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多