Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2012, 15:43
fredyossa
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 16 años, 3 meses
Puntos: 5
Información Convertir texto a tipo título (primera letra de cada palabra en mayúscula) en PHP

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($cadenaMB_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.