scandir 関数は、指定したディレクトリ内のディレクトリ名、ファイル名を一挙に取得する。
取得された値(文字列)にはそれらが混在していることになる。それらにはパス名は付かない。
define( "TARGET" , "../../php" );
$dlist = scandir(TARGET);
//昇順(a,b,c)、大文字は小文字より先になる(ASCIIコード順)。
//$dlist = scandir(TARGET, 1);
//降順(c,b,a)
foreach($dlist as $value)
{
if(is_dir(TARGET . "/" . $value))
{
//「.」「..」を含む。
echo $value."<br>\n";
}
}
echo "<br>\n";
foreach($dlist as $value)
{
if(is_file(TARGET . "/" . $value))
{
echo $value."<br>\n";
}
}
PHP Ver.5 の場合
scandirを使う。
ファイル名の昇順・降順の切り替えが簡単である。
//▼ファイル検索(再帰)
function Search($targetpath)
{
$dlist=scandir($targetpath,1);
//降順(c,b,a)である。昇順にする場合は第2引数をカットする。
foreach($dlist as $file)
{
if($file==".") continue;
if($file=="..") continue;
if(is_dir($targetpath."/".$file))
//引数を$fileとするだけでは正常に動作しない
{
$filepath=$targetpath."/".$file;
Search($filepath);
//ディレクトリの場合は再帰的に呼び出す
}
else
{
$Parts=pathinfo($targetpath."/".$file);
if($Parts['extension']==FILE_EXT)
{
CheckFile($targetpath."/".$file);
//原則htmlファイルの場合は内容チェック
}
}
}
}
¶find.php
PHP Ver.4 の場合
opendir,readdir,closedirを使う。
ファイル名の昇順・降順の切り替えが面倒である(できない)。
//▼ファイル検索(再帰)
function Search($targetpath)
{
if($hd=opendir($targetpath))
{
while( ($file=readdir($hd)) !== false)
{
if($file==".") continue;
if($file=="..") continue;
if(is_dir($targetpath."/".$file))
//引数を$fileとするだけでは正常に動作しない
{
$filepath=$targetpath."/".$file;
Search($filepath);
//ディレクトリの場合は再帰的に呼び出す
}
else
{
$Parts=pathinfo($targetpath."/".$file);
if($Parts['extension']==FILE_EXT)
{
CheckFile($targetpath."/".$file);
//原則htmlファイルの場合は内容チェック
}
}
}
}
closedir($hd);
}
¶find_org.php
このサンプルの実行