检查远程网站上是否存在文件而不知道扩展名

时间:2014-04-04 14:44:41

标签: php

我需要在多个远程服务器上找到文件名_template

该文件将具有以下两种扩展名之一: _template.htm 要么 _template.php

我可以在远程服务器上找到一个使用cURL的文件,这个文件很简单,但无法解决如何查找其中一个的问题。

代码处于循环中,它会搜索此文件的大约20个不同的网站,如果它发现它只需要说:找到它如果它找不到任何需要说明的两个文件:无找到

  • 两次执行cURL需要很长时间才能加载。
  • 搜索ftp阵列也需要很长时间。

我目前的代码不起作用,知道为什么它不起作用感谢我们想知道我怎么能让它工作:(这是一个循环)

        $template_file = glob("/_template.{htm,php}", GLOB_BRACE);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $client_link.$template_file);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 10);

        $data = curl_exec($ch);
        curl_close($ch);

        preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);

        $code = end($matches[1]);

        if(!$data) 
        {
            echo "No Files Found<br>";
        } 
        else 
        {
            if($code == 200) 
            {
                $filefound = 'Found'.$template_file;
            } 
            elseif($code == 404) 
            {
                $filefound = '404 File not Found';
            }
        }

1 个答案:

答案 0 :(得分:1)

问题在于glob函数 - 该函数匹配本地文件系统上的路径。添加print_r($template_file);' after the glob`,您会发现它与任何内容都不匹配(或者只匹配本地系统上的内容)。

您需要做的是逐个构建网址:

foreach(array("htm", "php") as $ext)
{
    // build the URL string
    $url = "http://example.com/_template." . $ext;

    // now do whatever you need to with the URL...
}