从文件名中删除目录中可用的所有文件(图像文件)的字符串,而不影响其扩展名

Need to remove user requested string from file name. This below is my function.

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

It works partially good. But the mistake what in this routine is, renaming action also takes on file's extensions. What i need is, Only to rename the file and it should not to be affect its file extensions. Any suggestions please. Thanks in advance :).

I have libraries written by myself that have some of those functions. Look:

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

So you use

$replacedname = str_replace($strString,"", getFileNameWithOutExtension($file));

$newfilename = $replacedname.".".getFileExtension($file);

Check it working here: http://codepad.org/CAKdCAA0