PHP file_exists和通配符

2022-08-30 09:29:42

有没有办法编写PHP file_exists函数,以便它在目录中搜索具有任意扩展名的文件。例如,假设我知道一个文件被称为“hello”,但我不知道扩展名,我将如何编写一个函数来搜索名为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文件的完整路径。上述操作与 相同,但迭代器提供了一个更强大和可扩展的 API。glob()


推荐