Есть ли способ записать PHP file_exists функция так, чтобы это искало каталог файл с произвольным расширением. Например, предположите, что я знал, что файл назвали "привет", но я не знал расширение, как я запишу функцию, которая искала файл, названный привет.* и возвратил название этого файла? Насколько я могу сказать, file_exists будет только искать строку.
Спасибо.
Вы ищете функцию 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)
Если вам нужно немного больше контроля и вы используете до PHP 5.3, вы можете использовать DirectoryIterator или RecursiveDirectoryIterator. У обоих есть много отличных функций для дополнительного контроля и манипуляций.
Документация PHP находится в DirectoryIterator и RecursiveDirectoryIterator
Начиная с PHP5.3, вы также можете использовать GlobIterator
для поиска в каталоге с помощью подстановочных знаков:
$it = iterator_to_array(
new GlobIterator('/some/path/*.pdf', GlobIterator::CURRENT_AS_PATHNAME) );
вернет полные пути ко всем. pdf файлы в некотором / path в массиве. Вышеупомянутое работает примерно так же, как glob ()
, но итераторы предоставляют более мощный и расширяемый API.