2016-09-06 4 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

@ Когда я ответил на вопрос, что он не использовал 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'; 
    } 
} 
Смежные вопросы