ホームページ >バックエンド開発 >PHPチュートリアル >php glob はディレクトリ ファイル トラバーサルとパターンに一致するファイル パスの検索を実装します_PHP チュートリアル

php glob はディレクトリ ファイル トラバーサルとパターンに一致するファイル パスの検索を実装します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:03:14865ブラウズ

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
print_r(glob("*.txt"));
?>出力は次のようになります:

配列
(
[0] =>ターゲット.txt
[1] => ソース.txt
[2] =>テスト.txt
[3] =>test2.txt
)例2
print_r(glob("*.*"));
?>出力は次のようになります:

配列
(
[0] => 連絡先.csv
[1] => デフォルト.php
[2] =>ターゲット.txt
[3] => ソース.txt
[4] => tem1.tmp
[5] =>テスト.htm
[6] =>test.ini
[7] =>test.php
[8] =>テスト.txt
[9] =>test2.txt
)


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445313.html技術記事 PHP 関数 glob を使用して、パターンに一致するファイル パスを検索します。 glob 関数は組み込みであるため、glob() 関数を使用したディレクトリの読み取りが N 倍高速であることを主に説明します。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。