Cita: Te faltaría considerar en tu función los casos que comenté antes sobre nombre de archivos tipo:
nose.algo.algo.algo.extension
La validación que haces de las extensiones admitidas en el array podrías usar la función "in_array()" (en lugar del foreach() que empleas) ..
Buenas, si te fijás, usé str
rchr (no strchr), por lo que el substring se hace a partir del último punto encontrado hacia el final.
En general, nunca usé muy a fondo las (muchas) funciones específicas que tiene php para arrays, más que nada por desconocerlas y por la costumbre de hacerlo a mano en otros lenguaje con menos funciones predefinidas. Pero siempre son bienvenidas si simplifican las cosas, a sí que tomo en cuenta el dato sobre el in_array().
Salidas
Califa