PHPでディレクトリの内容を解析する
ファイルとサブディレクトリの両方を含む、
あるディレクトリ dir が与えられているとします。
このディレクトリから名前の配列を取得してみましょう:
<?php
$files = array_diff(scandir('dir'), ['..', '.']);
?>
各名前について、それがファイルかディレクトリかを チェックしてみましょう:
<?php
$files = array_diff(scandir('dir'), ['..', '.']);
foreach ($files as $file) {
echo $file;
var_dump(is_file('dir/' . $file));
}
?>
スキャン対象のディレクトリ名がコード内の2箇所に 書かれていることに注意してください。 これはあまり便利ではありません。この名前を 別の変数に切り出しましょう:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
echo $file;
var_dump(is_file($dir. '/' . $file));
}
?>
次に、すべてのファイルについて、 その内容を画面に表示してみましょう:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
if (is_file($dir. '/' . $file)) {
echo file_get_contents($dir. '/' . $file);
}
}
?>
ファイルへのパスが2回計算されていることに 気づくかもしれません。これを別の変数に 切り出しましょう:
<?php
$dir = 'dir';
$files = array_diff(scandir($dir), ['..', '.']);
foreach ($files as $file) {
$path = $dir. '/' . $file; // ファイルへのパス
if (is_file($path)) {
echo file_get_contents($path);
}
}
?>
ディレクトリが与えられます。そのディレクトリ内の サブディレクトリの名前を縦一列に表示してください。
ディレクトリが与えられます。そのディレクトリ内の ファイルの名前を縦一列に表示してください。
ディレクトリが与えられます。そのディレクトリ内の 各ファイルの末尾に現在の時刻を書き込んでください。