<?php
$files = list_files(dirname(__FILE__), array());
foreach($files as $file){
if(preg_match("/\.html$/i", $file)){
// 処理
}
}
// ディレクトリ内のファイルを再帰的に取得する
function list_files($dir, $contents){
foreach(scandir($dir) as $value){
if($value == "." || $value == "..") {
continue;
}
$fullPath = $dir."\\".$value;
if(is_file($fullPath)) {
array_push($contents, $fullPath);
} elseif (is_dir($fullPath)) {
$contents = list_files($fullPath, $contents);
}
}
return $contents;
}
?>
dirname(__FILE__)
__FILE__ は php ファイルの場所が格納されている定数です。__FILE__ は ファイル名も含まれているため、dirname を使用してディレクトリ部分のみ取得します。
scandir($dir)
scandir は引数で指定したフォルダの中身を配列で返します。サブディレクトリ内を再帰的に取得することはできないので、自前でその処理を書いたものが list_files 関数になります。
PHP で日本語ファイル名を扱う場合は、PHP 7.1 以上である必要があります。
Windows版 PHP 7.1 で日本語パス(パス文字列のエンコーディング)が対応されることによる影響