Как насчет использования pathinfo
для извлечения частей, составляющих имя файла?
Например:
$name = 'gallery/painting/some_image_name.jpg';
$parts = pathinfo($name);
var_dump($parts);
Что вам даст:
array
'dirname' => string 'gallery/painting' (length=16)
'basename' => string 'some_image_name.jpg' (length=19)
'extension' => string 'jpg' (length=3)
'filename' => string 'some_image_name' (length=15)
И затем вы можете использовать str_replace
для замены _ пробелами:
$name2 = str_replace('_', ' ', $parts['filename']);
var_dump($name2);
И вы получите:
string 'some image name' (length=15)