簡體   English   中英

根據文件名排除某些文件

[英]excluding certain files based on filename

因此,我有一個代碼片段,可以讀取目錄並對其中的文件執行某些操作。 我要排除的文件名數組。 我的代碼如下所示:

$excluded = array(".","..","thumbs.db");

if($fh = @opendir($dir)) 
{
    while(false !== ($file = @readdir($fh))) 
    {
       if(in_array(strtolower($file),$excluded))
       {
          continue;
       }
       //do processing here...

現在,我希望也應排除zip文件。 由於我不知道它們可能存在的名字,因此我需要根據擴展名跳過它們。

現在我知道我可以拆分文件名並查看最后一個元素以查看它是否壓縮等,但是我想問的是,有沒有一種方法可以在已經編碼的限制內實現它-像這樣添加它,然后調整循環以進行處理...

 $excluded = array(".","..","thumbs.db","*.zip");

這應該可以解決問題:

$excluded = array(".","..","thumbs.db");
$excludedExtensions = array(".zip",".rar");

if($fh = @opendir($dir)) 
{
    while(false !== ($file = @readdir($fh))) 
    {
       if(in_array(strtolower($file),$excluded) || 
          in_array(strtolower(substr($file, -4)), $excludedExtensions) )
       {
          continue;
       }
       //do processing here...

這並不是您要找的東西,但是我認為您不可能按照您想要的方式來做:(

-------------------------------------------------- -----------------------------------

編輯

我想提供一種更可靠的方法來執行此操作,因為有些文件的擴展名帶有4個或什至5個字母。 在查看了PHP手冊之后,我發現了這一點:

$excluded = array(".","..","thumbs.db");
$excludedExtensions = array(".zip",".rar", ".7z", ".jpeg", ".phtml");

if($fh = @opendir($dir)) 
{
    while(false !== ($file = @readdir($fh))) 
    {
       $path_parts = pathinfo($file);

       if(in_array(strtolower($file),$excluded) ||
          in_array(strtolower($path_parts['extension'])) )
       {
          continue;
       }
       //do processing here...

在此處查看更多信息: PHP手冊:pathinfo

暫無
暫無

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

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