ホームページ >バックエンド開発 >PHPチュートリアル >php glob はディレクトリ ファイル トラバーサルとパターンに一致するファイル パスの検索を実装します_PHP チュートリアル
PHP 関数 glob は、パターンに一致するファイル パスを見つけるために使用されます。ここでは、glob 関数が組み込まれているため、glob() 関数を使用したディレクトリの読み取りが他の関数よりも N 倍高速であることを主に説明します。機能しており、当然処理が高速になります。
1. 関数のプロトタイプ
配列 glob (文字列パターン [, int フラグ] )
注: glob() 関数は配列を取得し、一致するファイル/ディレクトリを含む配列を返します。エラーが発生した場合は FALSE を返します
第二に、バージョンの互換性
PHP 4 >= 4.3.0、PHP 5
3. 基本的な使い方と機能例
1. ディレクトリ内の .txt 拡張子を持つファイルを照合します
コードは次のとおりです | コードをコピー |
$pattern = sql_case("*.pdf"); var_dump(glob($pattern)); ?> |
以下のようなものです
コードは次のとおりです | コードをコピー |
foreach (array_merge(glob("*.pdf"),glob("*.PDF")) as $filename) { echo "$filename n"; } ?> |
3. ディレクトリの下にあるすべてのサブディレクトリを取得します
コードは次のとおりです | コードをコピー |
関数 listdirs($dir) { 静的 $alldirs = array(); $dirs = glob($dir . '/*', GLOB_ONLYDIR); If (count($dirs) > 0) { foreach ($dir を $d として) $alldirs[] = $d; } foreach ($dir として $dir) listdirs($dir); $alldirs を返します; } ?> |
4. すべてのファイルを照合します
コードは次のとおりです | コードをコピー |
$files = glob('{,.}*', GLOB_BRACE); ?> |
4. 注意事項
1. リモート ファイルでは使用できません。チェック対象のファイルには、サーバーのファイル システムを介してアクセスする必要があります。
2. 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 は、GNU C ライブラリを使用しない Windows またはその他のシステムでは使用できません。
(7) GLOB_ERR - エラー情報 (読み取り不能なディレクトリなど) を停止して読み取ります。デフォルトではすべてのエラーを無視します。 注: GLOB_ERR は PHP 5.1 で追加されました。
glob() 関数の典型的な用途は、特定のディレクトリ内の .sql サフィックス ファイルを取得するなど、データ テーブル ファイルを読み取ることです。これは単体テストで非常に実用的であり、SQL ファイルを読み取り、データベースを再構築するために使用できます。詳しくはPHPマニュアルにご参加ください。次回のPHP組み込み関数研究シリーズにもご注目ください
その他の参考文献
コードは次のとおりです | コードをコピー |
例1 配列 配列 |