区分php

时间:2015-09-15 16:35:28

标签: php

我是php的新手。目前我正在尝试构建自己的站点映射php项目。我的测试目录位于自己的localhost中,其中包含一些其他项目,一些随机文件和许多目录。我的目录视图默认为wamp,就像apache 2.4.9目录列表。

我正在使用file_get_contents($ url)浏览目录并使用正则表达式获取标记的所有href,然后再次浏览它们。

我的问题是如何区分目录或文件?我不想将file_get_contents请求发送到任何类型的文件,只发送到目录。但首先我需要知道哪个href是一个文件,哪个不是为了那个目的。有没有内置的PHP功能来做到这一点?或者我怎么能这样做呢?

2 个答案:

答案 0 :(得分:3)

继续使用:

bool is_dir ( string $filename )
// or:
bool is_file ( string $filename )

来源:PHP文档is_diris_file

答案 1 :(得分:0)

我找到了问题的答案或解决方法。我想知道远程/本地链接是文件还是目录。如果它是本地的(php文件所在的目录/域),可以通过is_diris_file函数找到它。如果它不在本地,那么检测它是否是一个文件有一些问题。所以我找到了解决方法的方法,首先我尝试确定文件的大小,如果我可以解析文件大小,那么它的文件大小如果不是它的目录。从中得到了这个想法 https://gist.github.com/eyecatchup/f26300ffd7e50a92bc4d

function isItAFile($url)
{
    $ch = curl_init($url);
    curl_setopt_array($ch, array(
        CURLOPT_RETURNTRANSFER  => 1,
        CURLOPT_FOLLOWLOCATION  => 1,
        CURLOPT_SSL_VERIFYPEER  => 0,
        CURLOPT_NOBODY          => 1,
    ));
    curl_exec($ch);
    $clen = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
    curl_close($ch);
    if (!$clen) {
        return 0;
    }else if($clen == -1){
        return 0;
    }else{
        return 1;
    }
}
echo isItAFile("http://google.com");
OFC这不是最终的答案,这甚至不是我想要的方式,但这是我得到的最好的。如果你们中的任何一个人知道任何好方法,请帮忙。我是php和stackoverflow的新手。抱歉我的英文不好