簡體   English   中英

下載腳本 > 不顯示具有特定擴展名的文件

[英]Downloadscript > Do not display files with a specific extension

Donloadscript > 不顯示具有特定擴展名的文件。

我有一個下載腳本,其中以下說明未顯示某些文件。 這也很有效。

while ($file_name = readdir($dir_handle)) {
        // Hide files so only visible files can be downloaded
        if ($file_name != '.access' and $file_name != '.' and $file_name != '.htaccess' and $file_name != 'index.php' and $file_name != '001.php' and $file_name != '002.php' and $file_name != '003.php' and $file_name != '005.php' and $file_name != '007.php' and $file_name != '009.php' and $file_name != '010.php') {
$show_files
}

問題:如何在全局范圍內定義所有 PHP 文件,而不是像在發布的代碼中那樣顯式定義每個 PHP 文件? 它不適用於$file_name.= '*.php

非常感謝您的提示和提示

由於 PHP 8 我們有str_ends_with應該適合你。 那,連同文字文件的查找數組就足夠了。 有關舊版本 PHP 的str_ends_with版本,請參閱此版本,盡管我也可能推薦Symfony polyfill ,只是為了訪問其他功能。

function shouldFileBeHiddenA(string $file): bool {
    static $knownHiddenFiles = ['.access', '.', '.htaccess'];
    
    if(in_array($file, $knownHiddenFiles)) {
        return true;
    }
    
    if(str_ends_with($file, '.php')) {
        return true;
    }
    
    return false;
}

另一種方法是使用pathinfo function 這可能有點矯枉過正,但對某些人來說可能更容易閱讀:

function shouldFileBeHiddenB(string $file): bool {
    static $knownHiddenFiles = ['.access', '.', '.htaccess'];
    static $knownHiddenExtensions = ['php'];
    
    if(in_array($file, $knownHiddenFiles)) {
        return true;
    }
    
    if(in_array(pathinfo($file, PATHINFO_EXTENSION), $knownHiddenExtensions)) {
        return true;
    }

    return false;
}

演示: https://3v4l.org/HiJHe

暫無
暫無

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

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