Удалить строку из имени файла для всех файлов (файлов изображений), доступных в каталоге, не затрагивая его расширения

Необходимо удалить запрашиваемую пользователем строку из имени файла. Это ниже моя функция.

$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);
}
}

Это работает частично хорошо. Но ошибка в том, что в этой процедуре, переименование действия также принимает расширения файла. Что мне нужно, это только переименовать файл, и это не должно повлиять на его расширения файлов. Любые предложения, пожалуйста. Заранее спасибо :).

0

Решение

У меня есть библиотеки, написанные мной, которые имеют некоторые из этих функций. Посмотрите:

//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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]