ファイル検索は、PHP を使用してディレクトリを走査し、各ファイルに移動して比較用のファイル名を取得します。その後、指定したファイルが見つかると、走査が停止され、検索対象のファイル名とアドレスが表示されます。 。
今日は検索ファイルを処理するための関数を作成します。検索されたファイルが特定のディレクトリに存在するかどうかを確認します。PHP 関数にはそのような検索関数はないようです。
phpではファイル操作が不可欠であり、ファイルの使用頻度も非常に高く、例えば、一般的なディレクトリ管理システムやデータベースを持たないゲストブックなどはすべてファイル操作を使用しますが、ここで言うファイルとは単にファイル操作だけを指すわけではありません。ディレクトリの操作だけでなく、txt ファイルなどの指定されたファイルの操作も可能です。
以下は、ファイル検索に特に使用される関数メソッドです。file_search はメソッド名で、$directory は検索対象のファイルが存在するディレクトリです。たとえば、「admin/」ディレクトリです。 $recursive は、検索が成功したかどうかを判断するために使用されます。他の操作が必要な場合は、対応するパラメーターを後で追加できます。
例1
コードは次のとおりです |
コードをコピー |
関数 file_search($directory, $search, $recursive = TRUE)
{
$res = FALSE;
$dir_handle = opendir($directory);
while( FALSE !== ($file = readdir($dir_handle)) )
{
if( $file == '.' || $file == '..' )
{
続けます;
}
if( is_dir("$ディレクトリ$ファイル") )
{
if( $recursive )
{
$res = file_search("$directory$file", $search);
if( $res !== FALSE )
{
$res を返します;
}
}
}
if( $file == $search )
{
"$ディレクトリ$ファイル"を返します;
}
}
FALSE を返します;
}
?>
|
例2
コードは次のとおりです |
コードをコピー |
/*ファイル検索機能
使用法:
findfile (ディレクトリ、サブディレクトリを走査するかどうか、ファイルの内容を検索するかどうか、検索しないディレクトリ);
ケトル
2005-07-07
*/
関数 findfile ($dir, $find_sub_dir=false, $find_content=false, $excel_dir=false)
{
$d = dir($dir);
While (false !== ($entry = $d->read())) {
If($entry == "." || $entry == ".." || in_array ($entry, $excel_dir))
続けてください。
$file = $d->path."/".$entry;
If ( is_dir ( $file) )
{
If ( $find_sub_dir )
Findfile ($file、$find_sub_dir、$find_content、$excel_dir) ;
{
If ( $find_content )
If ( strstr(file_get_contents($file),$find_content) )
echo $file." n";
echo $file." n";
}
$d->close();
}
//テスト:
findfile ('..',true,'Furongjj',array('templates_c','admin','xixi')) ;
?>
| 例 3
PHPのglob関数を使用してファイルを検索し、ファイルディレクトリを走査します
関数の説明: 配列 glob ( string $pattern [, int $flags ] )
機能: パターンに一致するファイル パスを検索し、一致するファイル (ディレクトリ) を含む配列を返します (注: チェックされるファイルはサーバー システムからのものである必要があり、リモート ファイルには使用できません)
パラメータの説明: 最初のパラメータ: マッチングモード、2 番目のオプションのパラメータ:
•GLOB_MARK - 返された各アイテムにスラッシュを追加します
•GLOB_NOSORT - ディレクトリ内の元の出現順序でファイルを返します (ソートされていません)
•GLOB_NOCHECK - 一致するファイルがない場合の検索に使用されるパターンを返します
•GLOB_NOESCAPE - バックスラッシュはメタキャラクターをエスケープしません
•GLOB_BRACE - {a,b,c} を展開して 'a'、'b' または 'c' に一致させます
•GLOB_ONLYDIR - パターンに一致するディレクトリ エントリのみを返します
コードは次のとおりです
コードをコピー
|
|
$file = glob('{,.}*', GLOB_BRACE); //すべてのファイルに一致します
$file1 = glob('*.php') //すべての php ファイルと一致します
print_r($file1);
| 例 4
コードは次のとおりです
コードをコピー
|
|
print_r(listDir('./')) //現在のディレクトリを走査します
関数 listDir($dir){
$dir .= substr($dir, -1) == '/' '' : '/';
$dirInfo = array();
foreach (glob($dir.'*') as $v) {
$dirInfo[] = $v;
if(is_dir($v)){
$dirInfo = array_merge($dirInfo, listDir($v));
}
}
$dirInfo を返します;
}
|
http://www.bkjia.com/PHPjc/632907.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/632907.html技術記事ファイル検索では、php を使用してディレクトリを走査し、各ファイルに移動して比較用のファイル名を取得します。その後、指定したファイルが見つかると、走査が停止され、検索対象のファイル名とアドレスが表示されます。 ..