Tema: FAQ's de PHP
Ver Mensaje Individual
  #34 (permalink)  
Antiguo 20/12/2002, 10:25
Avatar de e-miliox
e-miliox
 
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 22 años
Puntos: 7
Capitalizador

Tema: Manejo de Strings

Pregunta: como puedo hacer para que las primeras letras de un nombre sean puestas en mayusculas?

Respuesta:

la funcion ucwords() sirve para llevar el primer caracter de un cada palabra de un string a mayuscula (capitalizar). La puedes complementar con un strtolower() anidado para que siempre salga la primera letra en mayuscula y las demas de la palabras en minuscula

asi
Código PHP:
<?php

$varStringConFormato 
ucwords(strtolower($varStringSinFormato));

?>
si usas el nombre luis miguel MONTES BurruCHAga

saldra como resultado Luis Miguel Montes Burruchaga

(este ejemplo sale en la ayuda de php, pero lo explique un pokito mas pa que la entendieran mejor)

tambien se me ocurre otra forma utilizando ucfirst() (primer caracter de un string a mayuscula), combinado tambien con strtolower(), este ultimo metodo te podria servir mas en el caso de tratar con apellidos compuestos (de las Mercedes, del Carmen, de la Fuente , etc)... el idea consiste en separar mediante un explode() la cadena que contiene el nombre o lo que quiereas tratar...luego a cada elemento aplicas la funcion ucfirst(strtolower($elementoArray)), SI y SOLO SI no es un 'articulo' (la, las, de...)...

mas menos asi

la hice a modo de funcion :)

Código PHP:
<?
function Capitalizar($nombre)
{
    
// aca definimos un array de articulos (en minuscula)
    // aunque lo puedes definir afuera y declararlo global aca
    
$articulos = array(
    
'0' => 'a',
    
'1' => 'de',
    
'2' => 'del',
    
'3' => 'la',
    
'4' => 'los',
    
'5' => 'las',
    );

    
// explotamos el nombre
    
$palabras explode(' '$nombre);

    
// creamos la variable que contendra el nombre
    // formateado
    
$nuevoNombre '';

    
// parseamos cada palabra
    
foreach($palabras as $elemento)
    {
        
// si la palabra es un articulo
        
if(in_array(trim(strtolower($elemento)), $articulos))
            {
            
// concatenamos seguido de un espacio
            
$nuevoNombre .= strtolower($elemento)." ";
            } else {
            
// sino, es un nombre propio, por lo tanto aplicamos
            // las funciones y concatenamos seguido de un espacio
            
$nuevoNombre .= ucfirst(strtolower($elemento))." ";
            }
    }

    return 
trim($nuevoNombre);
}
?>
__________________
=PoWeReD By MySeLf!=