Código:
cual seria el problemita, si escribo ÚLTIMA por ejemplo todo me lo pone en minusculas con acento claro, como podria hacer para que en caso de que sea la vocal o ñ ha capitalizar respete el acento u Ñ en mayusculasfunction capitalizar($nombre) { $low = array(chr(193) => chr(225), //á chr(201) => chr(233), //é chr(205) => chr(237), //í* chr(211) => chr(243), //ó chr(218) => chr(250), //ú chr(220) => chr(252), //ü chr(209) => chr(241) //ñ ); // aca definimos un array de articulos (en minuscula) // aunque se puede definir afuera y declararlo global aca $outputString = utf8_decode($nombre); //$outputString = strtolower($outputString);//strtolower(strtr($str,$low)); $outputString = strtolower($outputString); $nombre = utf8_encode(strtr($outputString,$low)); $cap_articulos[] = 'a'; $cap_articulos[] = 'de'; $cap_articulos[] = 'del'; $cap_articulos[] = 'la'; $cap_articulos[] = 'los'; $cap_articulos[] = 'las'; $cap_articulos[] = 'y'; // explotamos el nombre $cap_palabras = explode(' ', $nombre); // creamos la variable que contendra el nombre // formateado $nuevoNombre = ''; // parseamos cada palabra foreach($cap_palabras as $elemento) { // si la palabra es un articulo //if(in_array(trim(strtolower($elemento)), $cap_articulos)) if(in_array(trim($elemento), $cap_articulos)) { // concatenamos seguido de un espacio $nuevoNombre .= $elemento." "; } else { // sino, es un nombre propio, por lo tanto aplicamos // las funciones y concatenamos seguido de un espacio $nuevoNombre .= ucfirst($elemento)." "; } } return trim($nuevoNombre); }
osea quede asi: Última o Ñañes
saludos
espero sus comentarios
nota: sera que el ucfirst ya no deba usarse en este caso?