ホームページ >バックエンド開発 >PHPチュートリアル >glob メソッドを使用してフォルダー内のすべてのファイルを走査する
フォルダー内のすべてのファイルを走査するには、通常、opendir メソッドと readdir メソッドを使用できます。
例: 指定されたディレクトリ内のすべての 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></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></code>
注その glob が返すのは path+search results のパスになります (例: 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 と一致します ファイル パスは、一般的なシェルで使用されるルールと同様です。略語展開やパラメータ置換は行われません。 Glob は、通常のパス マッチングを使用する場合に強力です。
flags 有効なフラグは次のとおりです:
GLOB_MARK - 返される各項目にスラッシュを追加します
GLOB_NOSORT - ディレクトリに表示される元の順序でファイルを返します (ソートされていません)
GLOB_NOCHECK - ファイルがない場合Match は検索に使用されるパターンを返します
GLOB_NOESCAPE - バックスラッシュのエスケープされていないメタ文字
GLOB_BRACE - {a,b,c} を展開して 'a'、'b'、または 'c' に一致します
GLOB_ONLYDIR - ディレクトリ エントリのみを返しますパターンに一致します
GLOB_ERR - エラー情報 (読み取り不能なディレクトリなど) を停止して読み取ります。デフォルトではすべてのエラーを無視します
例: glob メソッドを使用して、指定されたフォルダー (サブフォルダーを含む) を走査します
<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></code>
著作権ステートメント:この記事はブロガーによるオリジナル記事であり、ブロガーの許可なしに転載することを禁じます。
上記では、コンテンツを含むフォルダー内のすべてのファイルを走査するための glob メソッドの使用方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。