$dp = 'test';
$res = jpFnRename($dp);
echo '<pre>';
var_dump($res);
echo '</pre>';
/**
* 日本語ファイル名を半悪英数字に変更
*
* @note
* 指定ディレクトリ内の日本語ファイル名を日時から生成したファイル名に一括変更する。
*
* @param string $dp ディレクトリパス
* @param string $sep セパレータ(省略可)
* @return array ファイル名変更情報
*/
function jpFnRename($dp, $sep='/'){
$resData = []; // レスポンスデータ
// ディレクトリパスの末尾にセパレータがなければ付け足す。
$one = mb_substr($dp, -1);
if($one != $sep) $dp .= $sep;
$fns = scandir($dp);
foreach($fns as $i => $fn){
if($fn == '.' || $fn == '..') continue;
if (!preg_match("/^[a-zA-Z0-9-_.]+$/", $fn)) {
$old_fp = $dp . $fn; // 旧ファイルパス
// 拡張子を取得
$pi = pathinfo($fn);
$ext = $pi['extension'];
// 新ファイルパス
$date_str = date('Ymd_his');
$new_fp = "{$dp}{$date_str}_{$i}.{$ext}";
rename ($old_fp, $new_fp); // ファイル名変更
$ent = ['old_fp'=>$old_fp, 'new_fp'=>$new_fp,];
$resData[] = $ent;
}else{
$old_fp = $dp . $fn;
$ent = ['old_fp'=>$old_fp, 'new_fp'=>$old_fp,];
$resData[] = $ent;
}
}
return $resData;
}
出力
array(3) { [0]=> array(2) { ["old_fp"]=> string(26) "test/20190828_080607_3.csv" ["new_fp"]=> string(26) "test/20190828_080607_3.csv" } [1]=> array(2) { ["old_fp"]=> string(26) "test/20190828_080607_4.txt" ["new_fp"]=> string(26) "test/20190828_080607_4.txt" } [2]=> array(2) { ["old_fp"]=> string(16) "test/big_cat.txt" ["new_fp"]=> string(16) "test/big_cat.txt" } }