$ornek = "dosya-adi-bu.mp3";
/* EN SAĞDAKİNİ ALMAK */
$parts = explode("-", $ornek); $sonUzanti = explode(".", $parts[count($parts)-1]);
// uzantıyı sil
unset($sonUzanti[count($sonUzanti)-1]);
// sonuncu bölüm
$son = implode(".", $sonUzanti); // eşittir = "bu"
/* EN SAĞDAKİNİ DEĞİŞTİRMEK */
// uzantıyı bul, "." ile parçala sonuncusunu al
$sonUzanti = explode(".", $ornek); $uzanti = $sonUzanti[count($sonUzanti)-1];
// sonuncusunu sil
unset($sonUzanti[count($sonUzanti)-1]);
// "." ile bölmüştük, uzantıyı sildik gerisi lazım
$uzantisiz = implode(".", $sonUzanti);
/* "-" ile böl, son kısmı sil kalanı(ilk kısımlar) bize lazım :D */
$parts = explode("-", $uzantisiz); unset($parts[count($parts)-1]);
$yeniornek = implode("-", $parts)."-YENI_ISIM.".$uzanti;
Takıldığınız nokta olursa, veya daha detaylı açıklamamı isterseniz belirtin