Una de las preguntas que abundan en internet es como pasar mayuscualas a minúsculas y viceversa, ademas de como convertir una cadena a tipo título (primera letra de cada palabra en mayúscula) utilizando php las soluciones son muchas y bastante elaboradas, pero no solucionan eficientemente (hasta donde ví) el problema de los acentos. ejemplo:
Tengo este texto:
$texto="ÁBACO ÑERO CUADRÓ AÑORANZAS";
Puedo jugar con
str_replace,
strtolower,
strtoupper,
ucwords,
ucfirst, pero deseo pasar el texto a tipo titulo, la mayoria de las funciones y ejemplos que encuentro me dan como resultado:
ábaco ñero cuadrÓ AÑoranzas. - mírese que las acentuadas no cambiaron
Ahora tenemos así
$texto="ábaco ñero cUADrÓ aÑoranzas";
El resultado
ábaco ñero CuadrÓ AÑoranzas. - lo mismo
Y la solucion bien sencilla y eficiente (creo) utilizando una funcion que a partir de PHP versión 4.3.0 podemos disponer
mb_convert_case lo cual la funcion para convertir a tipo título quedaría así
Código PHP:
function primera_mayuscula($cadena){
$cadena=mb_convert_case($cadena, MB_CASE_TITLE, "utf8");
return($cadena);
}
echo primera_mayuscula("ÁBACO ÑERO CUADRÓ AÑORANZAS");
echo primera_mayuscula("ábaco ñero cUADrÓ aÑoranzas");
//resultado para cualquiera de las dos: Ábaco Ñero Cuadró Añoranzas
espero sea de ayuda.