PHP中的glob()函数
glob()PHP中的函数使用简单的模式匹配在目录中查找文件和目录,并将这些文件名作为数组返回。它简化了所有PHP目录功能,因此您无需使用打开目录然后一个接一个地读取每个文件名的方法,而只需glob()在一个函数调用中使用。此外,glob()它与文件系统紧密协作,因此速度非常快。
这是一个简单的例子。
$globOut=glob('*');
$globOut变量现在包含根文件夹中所有文件和目录的列表。如果要在目录中查找所有以HTML结尾的文件,请使用以下命令。
该函数采用另一个参数,该参数是一个常量,它定义了一些更改输出的方式。这是可用常数的列表。
GLOB_MARK:为返回的每个项目添加一个斜线。
GLOB_NOSORT:返回出现在目录中的文件(不排序)。
GLOB_NOCHECK:如果找不到与之匹配的文件,则返回搜索模式。
GLOB_NOESCAPE:反斜杠不引用元字符。
GLOB_BRACE:展开{a,b,c}以匹配'a','b'或'c'。
GLOB_ONLYDIR:仅返回与模式匹配的目录条目。
GLOB_ERR:停止读取错误(例如不可读的目录),默认情况下会忽略错误。
如果要在根文件夹中找到所有以.php或.html结尾的文件,则可以按以下方式使用GLOB_BRACE常量。
$globOut=glob('*.{php,html}',GLOB_BRACE);
在此示例中,字符串'*。{php,html}'分为*.php和*.html,因此该函数匹配两种文件类型。
该功能可以完成许多不同的操作,例如,在链接列表中使用以下小片段来打印目录中所有HTML文件的列表。
$globOut = glob('*.html'); if(count($globOut)>0){ //确保glob数组中有东西 foreach ($globOut as $filename){ echo ''.$filename.'
'; } }else{ echo 'No files found.
'; }
在最近的应用程序中,我有一个文件目录,每个文件中都包含一些在重要函数调用期间创建的调试信息。每个文件的名称都有一个时间戳和一个.html来表示文件的创建时间。我想创建一些代码,使我可以轻松地以表的形式查看文件,而最近创建的文件位于顶部。
$globOut = glob('debug/*.html'); if(count($globOut)>0){ $globOut = array_reverse($globOut); echo '
File | Size | Timestamp |
---|---|---|
'.$filename.' | '.filesize($filename).' | '.date('l dS \of F Y h:i:s A',str_replace(array('debug/','.html'),array('',''),$filename)).' |
No debug files found.
'; }要注意的一件事是,glob()某些系统上的功能存在一些兼容性问题,尤其是PHP4和更早版本。因此,您可能需要检查它是否起作用,或者至少在依赖它之前创建一个替代方案。