PHP file_exists и подстановочный знак
Есть ли способ написать функцию PHP file_exists, чтобы он искал каталог для файла с произвольным расширением. Например, предположим, что я знал, что файл называется "привет", но я не знал расширения, как бы написать функцию, которая искала файл с именем hello. * И вернула имя этого файла? Насколько я могу судить, file_exists будет искать только строку.
Спасибо.
Ответы
Ответ 1
Вы ищете функцию 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)
Ответ 2
Начиная с PHP5.3, вы также можете использовать GlobIterator
для поиска в каталоге с подстановочными знаками:
$it = iterator_to_array(
new GlobIterator('/some/path/*.pdf', GlobIterator::CURRENT_AS_PATHNAME) );
будет возвращать полные пути ко всем файлам .pdf в некотором/пути в массиве. Вышеописанное выполняется примерно так же, как glob()
, но итераторы предоставляют более мощный и расширяемый API.
Ответ 3
Пока file_exists возвращает BOOLEAN, я написал эту небольшую функцию
который принимает строку поиска с * для поиска файлов...
Пример:
searchForFile("temp*");
function searchForFile($fileToSearchFor){
$numberOfFiles = count(glob($fileToSearchFor));
if($numberOfFiles == 0){ return(FALSE); } else { return(TRUE);}
}
Ответ 4
Если вам нужно немного больше контроля и на pre PHP 5.3 вы можете использовать DirectoryIterator или RecursiveDirectoryIterator. Оба имеют большую функцию для дополнительного управления и манипулирования.
Документы PHP находятся на DirectoryIterator и RecursiveDirectoryIterator