Foros del Web » Programando para Internet » PHP »

Primera Mayuscula en toda la cadena salvo algunas como?

Estas en el tema de Primera Mayuscula en toda la cadena salvo algunas como? en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema, resulta que en la base de datos Mysql yo tengo nombre de persona por decir un ejemplo en ...
  #1 (permalink)  
Antiguo 19/08/2011, 12:11
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Primera Mayuscula en toda la cadena salvo algunas como?

Hola a todos, tengo el siguiente problema, resulta que en la base de datos Mysql yo tengo nombre de persona por decir un ejemplo en cual tengo que motrarlo con la primera en mayuscula y el resto en minuscula.
para esto yo uso lo siguiente :

ucwords(strtolower($str))

ahora el problema es que por ej, yo tengo el siguiente texto : ANA MARIA ALFONSO DE PEREZ

si yo uso esas funciones me da Ana Maria Alfonse De , ahora el tema es que yo De necesito que este de (todo en minuscula), lo mismo si fuera un Y o A por ej.
Como se puede hacer para que ciertas palabras como DE,A,Y no le ponga el ucwords?

Saludos y gracias.
  #2 (permalink)  
Antiguo 19/08/2011, 12:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Primera Mayuscula en toda la cadena salvo algunas como?

Lo que puedes hacer primero es separar el texto en palabras usando explode(), luego iteras todas las palabras, y las que no sean "de, y, o, etc." aplicas lo que ya hacías.

Finalmente vuelves a pegar todo con join(), y listo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/08/2011, 08:41
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Primera Mayuscula en toda la cadena salvo algunas como?

Buena idea, voy a ver si lo implemente y les cuento que tal anduvo.

Gracias.
  #4 (permalink)  
Antiguo 23/08/2011, 10:48
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Primera Mayuscula en toda la cadena salvo algunas como?

Bueno al final arme una funcion estatica de una clase y se las dejo para ver primero si alguien puede mejorarla o para que alguien cambiando cosas les sirva.

Código PHP:
public static function ManejoTexto($str){
        
$array explode(' ',$str);
            
// palabras que permanecen en minusculas (agregar si se necesitan mas en este array)//
            
$am = array('DE','Y');
            
// palabras que permanecen en mayusculas (agregar si se necesitan mas en este array)//
            
$aM = array('ZT','S.A.');
            
// Cadena para (USA) en caballos en mayuscula//
            
$cadena '/^\([a-zA-Z]{3,3}\)/';
        
// Comprobacion palabra por palabra de todo el texto //    
        
for ($i=0;$i<count($array);$i++)
        {
            if (
in_array($array[$i],$am)) // dejo todo en minuscula //
                
$a mb_strtolower($array[$i]);
            
// si esta en el array o en la cadena //
            
elseif (in_array($array[$i],$aM) || preg_match_all($cadena,$array[$i],$partes)) // dejo todo en mayuscula //
                
$a strtoupper($array[$i]);
            
// sino armo mayuscula y minuscula la palabra //
            
else
                
$a ucwords(mb_strtolower($array[$i])); // dejo mayuscula primera y minuscula resto //
            // Array Final //
            
$arrayF[] = $a;
        }
        
// Agrupacion de todas las palabras separando por espacio //    
        
$salida implode(' ',$arrayF);
    return 
$salida;
    } 

Saludos y gracias.

Etiquetas: mayuscula, mysql, primera, cadenas
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 07:12.