Tags: php scripts-and-functions
<?php
/**
* function will rename all dirs and files recursively
* @param type $start_dir
* @param type $debug (set false if you don't want the function to echo)
*/
function rename_recursive($start_dir, $debug = true) {
$str = "";
$files = array();
if (is_dir($start_dir)) {
$fh = opendir($start_dir);
while (($file = readdir($fh)) !== false) {
// skip hidden files and dirs and recursing if necessary
if (strpos($file, '.')=== 0) continue;
$filepath = $start_dir . '/' . $file;
if ( is_dir($filepath) ) {
$newname = sanitize_file_name($filepath);
$str.= "From $filepath\nTo $newname\n";
rename($filepath, $newname);
rename_recursive($newname);
} else {
$newname = sanitize_file_name($filepath);
$str.= "From $filepath\nTo $newname\n";
rename($filepath, $newname);
}
}
closedir($fh);
}
if ($debug) {
echo $str;
}
}
/**
* function for modifing to a safe dir og filename
* Taken from from wordpress.
* @param string $filename
* @return string $newname
*/
function sanitize_file_name( $filename ) {
$filename_raw = $filename;
$special_chars = array("?", "[", "]", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}");
$filename = str_replace($special_chars, '', $filename);
$filename = preg_replace('/[\s-]+/', '-', $filename);
$filename = trim($filename, '.-_');
return $filename;
}
$start_dir = '/home/dennis/skansen';
$files = rename_recursive($start_dir);
This page has been requested 8917 times