Лучший способ сделать это, вероятно, был бы ...
$filename_ext = pathinfo($filename, PATHINFO_EXTENSION);
$filename = preg_replace('/^(.*)\.' . $filename_ext . '$/', '$1_thumb.' . $filename_ext, $filename);
Я только что проверил это, с $filename = 'path/to/something.jpg';
, и результат был path/to/something_thumb.jpg
.
Я говорю лучший способ , потому что обычно лучше использовать встроенные функции PHP.Это также учитывает все расширения файлов, которые может обрабатывать PHP (будучи разделением строк, это должно быть все).