hola amigos tengo esta función de php para capitalizar palabras
Código:
function 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);
}
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 mayusculas
osea quede asi: Última o Ñañes
saludos
espero sus comentarios
nota: sera que el ucfirst ya no deba usarse en este caso?