ホームページ > バックエンド開発 > PHPチュートリアル > 指定されたディレクトリ内のすべてのファイルをリストする PHP コード?

指定されたディレクトリ内のすべてのファイルをリストする PHP コード?

WBOY
リリース: 2016-06-23 14:10:32
オリジナル
944 人が閲覧しました

たとえば、コードを使用して現在のディレクトリ内のファイルとディレクトリを一覧表示することしかできません。
bak
1.php
1.txt
123
......
しかし、ファイルは bak フォルダーにあることが必要であることがわかりました。 (bak ディレクトリの絶対パスと相対パスの両方がわかります。)
コードの書き方がわかりません


ディスカッションへの返信 (解決策)

教えてください。書いた内容は間違っています、もちろん動きません

function get_files($dir){	$files = array();	if(is_dir($dir)){		if($dh = opendir($dir)){			while (($file = readdir($dh)) !== false) {				if(!($file == '.' || $file == '..')){					$file = $dir.'/'.$file;					if(is_dir($file) && $file != './.' && $file != './..'){						$files = array_merge($files, get_files($file));					}					else if(is_file($file)){						$fullpath = $_SERVER['HTTP_REFERER'];						$fullpath = str_replace(basename($fullpath),"",$fullpath);						$fullpath .= substr($file,2);						$files[] = $fullpath;					}				}			}		}	}	return $files;}
ログイン後にコピー


使用方法
$path = '../bak';
foreach(get_files($path) as $allfile){
echo $allfile.'< hr />';
}

イテレータを使用する、シンプルで高速な
$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

イテレータを使用するので、デフォルトはリーフのみです

$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


イテレータの使用はシンプルで高速です。

csdn でやっと参照先のコードが見れるようになりました… …はは

勉強しに来ました

イテレーターを使っているので、isdir の判定を気にする必要はありません。デフォルトでは、リーフのみです

$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



。イテレータの使用は簡単で高速です。
$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
は非常にシャープです。

本当ですか?

app/Admin/.. なども出力されないでしょうか?
isDir() を判定するだけでファイル名を出力することができます

イテレータを使用するので、デフォルトはリーフのみです

$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



イテレータの使用は簡単で高速です
$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

なし 完全なコードを待ち続けることができます。 。 。 。 。 。

PHP ドキュメントで言及されているリカーサーは、ノードを出力するにはパラメータを変換する必要がありますが、それが不完全なバグであるかどうかは不明です


です。そうですか?
app/Admin/.. なども出力されないでしょうか?
ただし、isDir() を判定してファイル名を出力することしかできません

何か役に立つことを教えてください〜!引き続き完全なコードを待ちます。 。 。 。 。 。

とても奇妙です!

上記のコードは役に立たないと言っているのでしょうか?

想像を超えて、$path に値を割り当てる方法、または戻り値から値を抽出する方法がわかりませんか?

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート