PHP file_exists和通配符
有没有办法编写PHP file_exists函数,以便它在目录中搜索具有任意扩展名的文件。例如,假设我知道一个文件被称为“hello”,但我不知道扩展名,我将如何编写一个函数来搜索名为hello.*的文件并返回此文件的名称?据我所知,file_exists只会搜索字符串。
谢谢。
有没有办法编写PHP file_exists函数,以便它在目录中搜索具有任意扩展名的文件。例如,假设我知道一个文件被称为“hello”,但我不知道扩展名,我将如何编写一个函数来搜索名为hello.*的文件并返回此文件的名称?据我所知,file_exists只会搜索字符串。
谢谢。
您正在寻找 glob()
函数。
file_exists
不执行任何类型的搜索 :它只允许人们在知道文件名称时知道文件是否存在。
而且,使用PHP > = 5.3,您可以使用新的GlobIterator
。
$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)
从 PHP5.3 开始,您还可以使用 GlobIterator
搜索带有通配符的目录:
$it = iterator_to_array(
new GlobIterator('/some/path/*.pdf', GlobIterator::CURRENT_AS_PATHNAME) );
将返回数组中某个/路径中所有.pdf文件的完整路径。上述操作与 相同,但迭代器提供了一个更强大和可扩展的 API。glob()