Это вопрос, который вы можете прочитать везде в Интернете с различными ответами:
$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);
$exts = split("[/\\.]", $filename);
$n = count($exts)-1;
$ext = $exts[$n];
и т.п.
Однако всегда есть "лучший способ", и он должен быть в переполнении стека.