如何在php中检查url是不是存在
Posted
技术标签:
【中文标题】如何在php中检查url是不是存在【英文标题】:How to check a url exist or not in php如何在php中检查url是否存在 【发布时间】:2012-10-24 22:52:15 【问题描述】:我想查看网址
http://example.com/file.txt
php中存在与否。我该怎么做?
【问题讨论】:
***.com/questions/2280394/…的可能重复 【参考方案1】:我同意这个回复,我这样做成功了
$url = "http://example.com/file.txt";
if(! @(file_get_contents($url)))
return false;
$content = file_get_contents($url);
return $content;
您可以按照代码检查该文件是否存在于该位置。
【讨论】:
【参考方案2】:if(! @ file_get_contents('http://www.domain.com/file.txt'))
echo 'path doesn't exist';
这是最简单的方法。如果您不熟悉@
,它将指示函数返回 false,否则会引发错误
【讨论】:
OT:对于首选@!
还是!@
是否有普遍共识?我使用前者,但出于某种原因对后者感到很奇怪——也许 @
after 操作员觉得它不应该工作,即使它显然应该工作。
修复语法错误。并检查正确的退货类型。 if(@file_get_contents('localhost/mh/t.php')===false) echo '路径不存在';
确保为其他域启用 file_get_contents。这是在 php.ini 中完成的。
@habeebperwad 如果您使用@
并且它失败了,它将返回0
,而不是false
- 您可以使用if
对其进行测试,因为它是错误的,或者===0
但不是===false
。
“PHP 支持一种错误控制运算符:at 符号 (@)。当添加到 PHP 中的表达式之前,该表达式可能生成的任何错误消息都将被忽略。”。 @ 不会返回任何值,对吧?如果 url 返回一个没有内容的文件,上面的代码将失败。【参考方案3】:
$filename="http://example.com/file.txt";
if (file_exists($filename))
echo "The file $filename exists";
else
echo "The file $filename does not exist";
或
if (fopen($filename, "r"))
echo "File Exists";
else
echo "Can't Connect to File";
【讨论】:
@habeebperwad 在我的回答中尝试第二个选项【参考方案4】:在Ping site and return result in PHP 上试试这个功能。
function urlExists($url=NULL)
if($url == NULL) return false;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300)
return true;
else
return false;
【讨论】:
【参考方案5】:将使用 PHP curl 扩展:
$ch = curl_init(); // set up curl
curl_setopt( $ch, CURLOPT_URL, $url ); // the url to request
if ( false===( $response = curl_exec( $ch ) ) ) // fetch remote contents
$error = curl_error( $ch );
// doesn't exist
curl_close( $ch ); // close the resource
【讨论】:
是的。如果 file_exists 不起作用,这是最典型的正确解决方案,尽管 Landon 的也可以。以上是关于如何在php中检查url是不是存在的主要内容,如果未能解决你的问题,请参考以下文章