【问题标题】:How to check a url exist or not in php如何在php中检查url是否存在
【发布时间】:2012-10-24 22:52:15
【问题描述】:

我想查看网址 http://example.com/file.txt php中存在与否。我该怎么做?

【问题讨论】:

标签: php url file-exists


【解决方案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 的也可以。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2013-03-06
      • 1970-01-01
      • 2020-07-05
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多