Foros del Web » Programando para Internet » PHP »

capitalizar y acentuar la primera vocal

Estas en el tema de capitalizar y acentuar la primera vocal en el foro de PHP en Foros del Web. 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) ...
  #1 (permalink)  
Antiguo 25/06/2008, 14:52
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Pregunta capitalizar y acentuar la primera vocal

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?
__________________
gerardo
  #2 (permalink)  
Antiguo 25/06/2008, 15:38
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: capitalizar y acentuar la primera vocal

y si utilizaras

$texto{0}=strupper($texto{0});


q onda?
__________________
Degiovanni Emilio
developtus.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.