<?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 で日本語パス(パス文字列のエンコーディング)が対応されることによる影響