No lo entiendo muy bien, supongo que debería ser más simple
de esta forma funciona, pero me parece mas engorrosa
Código PHP:
function formatear($cadena) {
echo strtolower(strtr($cadena, array('á'=>'a','é'=>'e','í'=>'i','ó'=>'o','ú'=>'u','ñ'=>'n',' '=>'_')));
}
formatear('Hóla Muñdo');