Heim  >  Artikel  >  Backend-Entwicklung  >  使用glob方法遍历文件夹下所有文件

使用glob方法遍历文件夹下所有文件

WBOY
WBOYOriginal
2016-07-30 13:30:481000Durchsuche

遍历文件夹下所有文件,一般可以使用opendirreaddir 方法来遍历。

例子:找出指定目录下的所有php文件(不搜寻子文件夹),代码如下:

<code><span><span><?php </span><span>$path</span> = dirname(<span>__FILE__</span>);
<span>$result</span> = traversing(<span>$path</span>);
print_r(<span>$result</span>);

<span><span>function</span><span>traversing</span><span>(<span>$path</span>)</span>{</span><span>$result</span> = <span>array</span>();
    <span>if</span>(<span>$handle</span> = opendir(<span>$path</span>)){
        <span>while</span>(<span>$file</span>=readdir(<span>$handle</span>)){
            <span>if</span>(<span>$file</span>!=<span>'.'</span> && <span>$file</span>!=<span>'..'</span>){
                <span>if</span>(strtolower(substr(<span>$file</span>, -<span>4</span>))==<span>'.php'</span>){
                    array_push(<span>$result</span>, <span>$file</span>);
                }
            }
        }
    }
    <span>return</span><span>$result</span>;
}
<span>?></span></span></span></code>

如使用glob方法来遍历则可以简化代码

<code><span><span><?php </span><span>$path</span> = dirname(<span>__FILE__</span>);
<span>$result</span> = glob(<span>$path</span>.<span>'/*.php'</span>);
print_r(<span>$result</span>);
<span>?></span></span></span></code>

注意,glob返回的会是path+搜寻结果的路径,例如path=’/home/fdipzone’,以上例子则返回

<code><span>Array</span>
(
    [<span>0</span>] => <span>/home/</span>fdipzone/a.php
    [<span>1</span>] => <span>/home/</span>fdipzone/b.php
    [<span>2</span>] => <span>/home/</span>fdipzone/c.php
)</code>

这是与opendir,readdir返回的结果不同的地方。

如果只是遍历当前目录。可以改成这样:glob(‘*.php’);
glob语法说明:

<code>array <span>glob</span> ( string <span>$pattern</span> [, <span>int</span><span>$flags</span> = <span>0</span> ] )</code>

glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径,类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。glob使用正则匹配路径功能强大。

flags 有效标记有:
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 ‘a’,’b’ 或 ‘c’
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误

例子:使用glob方法遍历指定文件夹(包括子文件夹)下所有php文件

<code><span><span><?php </span><span>$path</span> = dirname(<span>__FILE__</span>);
<span>$result</span> = <span>array</span>();
traversing(<span>$path</span>, <span>$result</span>);
print_r(<span>$result</span>);

<span><span>function</span><span>traversing</span><span>(<span>$path</span>, &<span>$result</span>)</span>{</span><span>$curr</span> = glob(<span>$path</span>.<span>'/*'</span>);
    <span>if</span>(<span>$curr</span>){
        <span>foreach</span>(<span>$curr</span><span>as</span><span>$f</span>){
            <span>if</span>(is_dir(<span>$f</span>)){
                array_push(<span>$result</span>, <span>$f</span>);
                traversing(<span>$f</span>, <span>$result</span>);
            }<span>elseif</span>(strtolower(substr(<span>$f</span>, -<span>4</span>))==<span>'.php'</span>){
                array_push(<span>$result</span>, <span>$f</span>);
            }
        }
    }
}
<span>?></span></span></span></code>

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了使用glob方法遍历文件夹下所有文件,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:搭建PHP环境Nächster Artikel:PHP - 验证 Name, E-mail, 和 URL