PHP file_exists и подстановочный знак

Есть ли способ записать PHP file_exists функция так, чтобы это искало каталог файл с произвольным расширением. Например, предположите, что я знал, что файл назвали "привет", но я не знал расширение, как я запишу функцию, которая искала файл, названный привет.* и возвратил название этого файла? Насколько я могу сказать, file_exists будет только искать строку.

Спасибо.

52
задан bsamek 30 April 2010 в 06:15
поделиться

3 ответа

Вы ищете функцию glob () .

file_exists не выполняет никакого поиска: он позволяет узнать, существует файл или нет, только зная его имя.

А с PHP> = 5.3 вы можете использовать новый GlobIterator .


В качестве примера с glob () следующая часть кода:

$list = glob('temp*.php');
var_dump($list);

дает мне этот вывод:

array
  0 => string 'temp-2.php' (length=10)
  1 => string 'temp.php' (length=8)


А вот этот:

$list = glob('te*-*');
var_dump($list);

Да, с двумя * ; -)

Выдает мне:

array
  0 => string 'temp-2.php' (length=10)
  1 => string 'test-1.php' (length=10)
  2 => string 'test-curl.php' (length=13)
  3 => string 'test-phing-1' (length=12)
  4 => string 'test-phpdoc' (length=11)
92
ответ дан 7 November 2019 в 09:18
поделиться

Если вам нужно немного больше контроля и вы используете до PHP 5.3, вы можете использовать DirectoryIterator или RecursiveDirectoryIterator. У обоих есть много отличных функций для дополнительного контроля и манипуляций.

Документация PHP находится в DirectoryIterator и RecursiveDirectoryIterator

1
ответ дан 7 November 2019 в 09:18
поделиться

Начиная с PHP5.3, вы также можете использовать GlobIterator для поиска в каталоге с помощью подстановочных знаков:

$it = iterator_to_array(
    new GlobIterator('/some/path/*.pdf', GlobIterator::CURRENT_AS_PATHNAME) );

вернет полные пути ко всем. pdf файлы в некотором / path в массиве. Вышеупомянутое работает примерно так же, как glob () , но итераторы предоставляют более мощный и расширяемый API.

7
ответ дан 7 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: