如何在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是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何检查一个值是不是已经存在以避免重复?

如果 URL 已存在于数据库中,如何使用 PHP 检查?

如何使用 PHP 检查页面 url 中是不是包含 www?

如何在 PHP 中检查文件是不是存在于目录中?

如何在php中检查当前的url,然后比较它是不是有一个特定的单词/短语

如何检查图片是不是存在于url