2016-09-06 82 views
0

如何在包含文件子名的文件夾中查找文件意味着需要搜索的文件沒有完全命名,但它是名稱的一部分,例如我想搜索文件'hello_world_123.png'。我沒有輸入文件的全名,而只輸入了一個或幾個字,例如'world_'是我的輸入,但代碼應該搜索文件的全名。如何使用PHP在文件夾中遞歸地查找文件?

總之,搜索可能像操作系統在文件瀏覽器或文件管理器中的搜索一樣工作。

我的代碼如下,但我堅持匹配if條件中的文件的名稱。

$file_name_ = 'recursive-1.php'; 
$dir = new RecursiveDirectoryIterator($folder_path, RecursiveDirectoryIterator::SKIP_DOTS); 
$it = new RecursiveIteratorIterator($dir); 

foreach($it as $file) {  

    $file_info = pathinfo($file);  

    $patt = '/^(\w+)\.+('.$file_name_.')\.+(\w+)*$/'; 
    $result = preg_match($patt,strtolower($file_info['basename']),$match);  
    if ($result) {  
     echo 'File found'; 
    } else { 
     echo 'File not found'; 
    } 
} 
+3

問題2:'recusive-1.php'不是'find-recursive-1-file.php'的子字符串。你應該更好地解釋什麼是「匹配」文件名的規則。 –

+0

它已更改爲'recursive-1.php'@CasimiretHippolyte – SCC

+1

\ w不包含破折號字符。如果您只想檢查是否存在,請嘗試strpos功能 –

回答

-2

您應該爲此使用preg_match()。您可以查看文件夾中的文件是否包含您正在搜索的文件的部分或全名。

+0

誰和爲什麼投票我的答案,這是問題的解決方案,您使用preg_match來查找包含你想要的文本?我的回答有什麼問題? – J3Rik0

+0

preg_match已在問題中使用,並不能單獨解決問題。 – Tonin

+0

@Tonin當我回答他沒有使用preg_match()的問題時,是的,這不是一個完整的答案,但它是一個起點,我可以擴大這一點,我個人並不認爲跳躍和投擲減去評論是一個正確的方法,但嘿,我是誰來判斷,順便說一句,你是否在投票前檢查了這個問題的編輯? – J3Rik0

0

要以遞歸方式查找具有或不具有擴展名的目錄中的文件,以下代碼會很有幫助。 文件名稱不是完整的名稱(文件名的一部分),因此strpos()函數將找到部分文件名的位置。

$file_name_ = 'recursive-1.php'; 

//Splitting the file to get the file name without extension 
$file_name_ = explode('.',$file_name_); 
$file_name_ = $file_name_[0]; 

$dir = new RecursiveDirectoryIterator($folder_path, RecursiveDirectoryIterator::SKIP_DOTS); 
$it = new RecursiveIteratorIterator($dir); 

//looping for all files in given directory 
foreach($it as $file) {  

    $file_info = pathinfo($file);  
    //$patt = '/^(\w+)\.+('.$file_name_.')\.+(\w+)*$/'; 
    //$result = preg_match($patt,strtolower($file_info['basename']),$match);  
    //$result = strpos(strtolower($file_info['filename']),strtolower($file_name_));  
    $result = stripos($file_info['filename'], $file_name_); 
    if ($result === flase) {  
     echo 'File not found'; 
    } else { 
     echo 'File found'; 
    } 
} 
相關問題