ディレクトリとそのディレクトリ内のすべてのファイルを走査するコードを作成しましたが、コードには最適化の余地があると常に感じています。ご協力いただければ幸いです。 //ページのエンコード方式を指定
header('Content-type:text/html;charset=utf-8')
$dir='f:/dir ' ;
//メソッド call
search_all_dir($dir);
//ディレクトリを走査するメソッド
関数 search_all_dir($dir)
{
if( is_dir($dir))
{
$handle=opendir($dir)
$piarr=array('.','..'); > while ($file=readdir($handle))
{
if(in_array($file,$piarr)==FALSE)
{
if(is_dir($dir.'/' .$ file))
{
echo 'ディレクトリ名: '.$file.'
'
$files=search_all_file($dir.'/'.$file); > if (isset($files[0]))
{
echo 'このディレクトリ内のすべてのファイル:'.'
';
foreach($files as $file)
{
echo ' '.$file;
}
}
search_all_dir($dir.'/'.$file);
}
}
else
{
echo $dir.'正当なディレクトリではないか、強制的に終了します';
}
}
//特定のディレクトリ内のすべてのファイルをスキャンします
function search_all_file($dir)
{
$files=array();
if(is_dir($dir))
{
$handle=opendir($dir);
$piarr=array('.','..');
while($file=readdir($handle))
{
if(in_array($file,$piarr)==FALSE)
{
if(is_dir($dir.'/'.$file)==FALSE)
{
$files[]=' '.$file.'
'
}
}
}
}
; $files;
}
ディスカッションに返信 (解決策) ディレクトリ関数を使用して書き込むだけです。 ディレクトリ イテレータを使用する方が簡単です。
私は通常
glob をトラバースするために glob 関数を使用します。結果はファイル名でソートされないように制御できます。別の使用方法で簡単に見つけることができます。指定されたファイル
この方法で、3 層ディレクトリ内のすべての ide_tmp.php ファイルを検索します
$ite = new RecursiveDirectoryIterator($dir); $nbfiles=0; foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) { if(is_dir($filename)) continue; echo $filename . '<br>'; }
$r = glob('images/*');for($i=0; $i<count($r); $i++) { if(is_dir($r[$i])) $r = array_merge($r, glob($r[$i] . '/*'));}print_r($r);