php glob实现目录文件遍历与寻找与模式匹配的文件路径
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-16 22:07:31 浏览: 评论:0
采用PHP函数glob实现寻找与模式匹配的文件路径,主要讨论glob()函数的作用和用法,利用glob函数读取目录比其它的要快N倍,因为glob函数是内置函数处理起来自然要快.
一,函数原型
array glob(string pattern[,int flags])
注意:glob()函数获取的是一个数组,其返回一个包含有匹配文件/目录的数组,如果出错返回FALSE.
二,版本兼容
PHP 4 >= 4.3.0, PHP 5
三,函数的基础用法与实例
1,匹配目录下.txt后缀的文件,代码如下:
- <?php
- foreach (glob("*.txt") as $filename) {
- echo $filename;
- }
- ?>
2,实现兼容大小写匹配,代码如下:
- <?php
- $pattern = sql_case("*.pdf");
- var_dump(glob($pattern));
- ?>
- //类似如下:
- <?php
- foreach (array_merge(glob("*.pdf"),glob("*.PDF")) as $filename) {
- echo "$filename n";
- }
- ?>
3,获取目录下的所有子目录,代码如下:
- <?php
- function listdirs($dir) {
- static $alldirs = array();
- $dirs = glob($dir . '/*', GLOB_ONLYDIR);
- if (count($dirs) > 0) {
- foreach ($dirs as $d) $alldirs[] = $d;
- }
- foreach ($dirs as $dir) listdirs($dir);
- return $alldirs;
- }
- ?>
4,匹配所有文件,代码如下:
- <?php
- $files = glob('{,.}*', GLOB_BRACE);
- ?>//开源软件:phpfensi.com
四,注意事项
1,不能作用于远程文件,被检查的文件必须通过服务器的文件系统访问。
2,使用 glob("[myfolder]/*.txt")将不能匹配,解决方法为 glob("[myfolder]/*.txt"),注意[]字符应用。
3,其次是第二个参数flags有效标记说明
(1)GLOB_MARK - 在每个返回的项目中加一个斜线
(2)GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
(3)GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
(4)GLOB_NOESCAPE - 反斜线不转义元字符
(5)GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
(6)GLOB_ONLYDIR - 仅返回与模式匹配的目录项 注意: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 库的系统上不可用。
(7)GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误 注意: GLOB_ERR 是 PHP 5.1 添加的。
glob()函数的典型应用是读取数据表文件,如获取某个目录下的.sql后缀文件,这种在单元测试中非常实用,可实现读取sql文件重建数据库等,具体请参与PHP手册,请关注下一期PHP内置函数研究系列.
其它参考,代码如下:
- //例子 1
- <?php
- print_r(glob("*.txt"));
- ?>//输出类似:
- Array
- (
- [0] => target.txt
- [1] => source.txt
- [2] => test.txt
- [3] => test2.txt
- )//例子 2
- <?php
- print_r(glob("*.*"));
- ?>//输出类似:
- Array
- (
- [0] => contacts.csv
- [1] => default.php
- [2] => target.txt
- [3] => source.txt
- [4] => tem1.tmp
- [5] => test.htm
- [6] => test.ini
- [7] => test.php
- [8] => test.txt
- [9] => test2.txt
- )
Tags: php glob 目录文件遍历 模式匹配
相关文章
- ·PHP 是什么?(2013-11-12)
- ·Php.ini文件位置在哪里 Php.ini文件找不到(2013-11-12)
- ·PHP 数据类型(2013-11-12)
- ·php 获取当前脚本的url(2013-11-12)
- ·php技术生成静态页面的实现(2013-11-13)
- ·缺陷月项目启动 披露PHP脚本语言漏洞(2013-11-13)
- ·在PHP中全面阻止SQL注入式攻击(2013-11-13)
- ·php生成随机密码的几种方法(2013-11-13)
- ·PHP中使用FCKeditor2.3.2配置(2013-11-13)
- ·如何使用PHP开发高效的WEB系统(2013-11-13)
- ·php:树形结构的算法(2013-11-13)
- ·php4和php5区别(2013-11-13)
- ·php数据库连接(2013-11-13)
- ·如何正确理解PHP的错误信息(2013-11-13)
- ·php页面漏洞分析及相关问题解决(2013-11-13)
- ·当在连接PHP时,抱怨一些数值没有定义参考?(2013-11-27)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)