Необходимо удалить запрашиваемую пользователем строку из имени файла. Это ниже моя функция.
$directory = $_SERVER['DOCUMENT_ROOT'].'/path/to/files/';
$strString = $objArray['frmName']; // Name to remove which comes from an array.
function doActionOnRemoveStringFromFileName($strString, $directory) {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(!strstr($file,$strString)) {
continue;
}
$newfilename = str_replace($strString,"",$file);
rename($directory . $file,$directory . $newfilename);
}
}
closedir($handle);
}
}
Это работает частично хорошо. Но ошибка в том, что в этой процедуре, переименование действия также принимает расширения файла. Что мне нужно, это только переименовать файл, и это не должно повлиять на его расширения файлов. Любые предложения, пожалуйста. Заранее спасибо :).
У меня есть библиотеки, написанные мной, которые имеют некоторые из этих функций. Посмотрите:
//Returns the filename but ignores its extension
function getFileNameWithOutExtension($filename) {
$exploded = explode(".", $filename);
array_pop($exploded);
//Included a DOT as parameter in implode so, in case the
//filename contains DOT
return implode(".", $exploded);
}
//Returns the extension
function getFileExtension($file) {
$exploded = explode(".", $file);
$ext = end($exploded);
return $ext;
}
Итак, вы используете
$replacedname = str_replace($strString,"", getFileNameWithOutExtension($file));
$newfilename = $replacedname.".".getFileExtension($file);
Проверьте это работает здесь:
http://codepad.org/CAKdCAA0
Других решений пока нет …