2016-09-06 134 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'; 
    } 
} 
相关问题