поиск файлов в директории - PullRequest
3 голосов
/ 11 мая 2011

У меня есть каталог с большим количеством файлов внутри:

pic_1_79879879879879879.jpg
pic_1_89798798789798789.jpg
pic_1_45646545646545646.jpg
pic_2_12345678213145646.jpg
pic_3_78974565646465645.jpg
etc...

Мне нужно перечислить только файлы pic_1_. Есть идеи, как я могу это сделать? Заранее спасибо.

Ответы [ 5 ]

9 голосов
/ 11 мая 2011

Используйте функцию glob ()

foreach (glob("directory/pic_1_*") as $filename) {
  echo "$filename";
}

Просто измените directory в вызове glob на правильный путь.

Это все в одномвыстрел, а не захват списка файлов и их фильтрация.

4 голосов
/ 11 мая 2011

Вот для чего glob () :

glob - Найти имена путей, соответствующие шаблону

Пример:

foreach (glob("pic_1*.jpg") as $file)
{
    echo $file;
}
4 голосов
/ 11 мая 2011

Функция opend dir поможет вам

$dir ="your path here";

$filetoread ="pic_1_";
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
               if (strpos($file,$filetoread) !== false)
                echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
            }
            closedir($dh);
        }
    }

удачи, см. Php.net opendir

1 голос
/ 11 мая 2011

Это один из образцов из руководства

http://nz.php.net/manual/en/function.readdir.php

<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>

вы можете изменить этот код, чтобы проверить имя файла, чтобы увидеть, начинается ли оно с pic_1_ используя что-то вроде этого

if (substr($file, 0, 6) == 'pic_1_')

Ручная ссылка для подстрок

http://nz.php.net/manual/en/function.substr.php

1 голос
/ 11 мая 2011

Используйте scandir, чтобы получить список всех файлов в каталоге, а затем используйте preg_grep, чтобы получить список файлов, которые соответствуют шаблону, который вы ищете.

...