Skip to content

Instantly share code, notes, and snippets.

@jv-k
Created December 29, 2019 12:30
Show Gist options
  • Save jv-k/d1768d8609426b8fea5ef7286e73dbd4 to your computer and use it in GitHub Desktop.
Save jv-k/d1768d8609426b8fea5ef7286e73dbd4 to your computer and use it in GitHub Desktop.
Rename multiple files/directories to lowercase, removing spaces & weird characters
<?php
function massrename($dir) {
$files = glob($dir . '/*');
foreach ($files as $file) {
$pathinfo = pathinfo($file);
$newname = strtolower($pathinfo['basename']);
// replace spaces with hyphens and remove funny characters
$newname = str_replace(' ', '-', $newname);
$newname = preg_replace('/[^\d\w\._-]/', '', $newname);
// make sure there's something left
$newname = $newname ? $newname : 'file';
// prevent renaming over an existing file
while ($newname !== $pathinfo['basename'] && file_exists($dir . '/' . $newname)) {
$newname = '_' . $newname;
}
rename($file, $dir . '/' . $newname) || die('o no there was an error');
is_dir($dir . '/' . $newname) && massrename($dir . '/' . $newname);
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment