簡體   English   中英

在php中的目錄和文件之間進行區分

[英]Distinguish between a directory and a file in php

我是php新手。 目前,我正在嘗試構建自己的站點映射php項目。 我的測試目錄位於自己的本地主機中,該主機具有一些其他項目,一些隨機文件和許多目錄。 我的目錄視圖默認為wamp,就像apache 2.4.9目錄列表一樣。

我正在使用file_get_contents($ url)來瀏覽目錄,並使用正則表達式來獲取標記的所有href,然后再次瀏覽它們。

我的問題是如何區分目錄或文件? 我不想將file_get_contents請求發送到任何類型的文件,而僅發送到目錄。 但是首先我需要知道哪個href是文件,而哪個不是目的。 有內置的php函數可以做到這一點嗎? 或關於我該怎么做的任何想法?

繼續使用:

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

來源:PHP文檔is_diris_file

我已經找到了問題的答案或解決方法。 我想知道遠程/本地鏈接是文件還是目錄。 如果它是本地文件(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的新手。 對不起,我的英語不好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM