Foros del Web » Programando para Internet » PHP »

Funcio mayusculas en palabras de 3 o mas letras

Estas en el tema de Funcio mayusculas en palabras de 3 o mas letras en el foro de PHP en Foros del Web. Hola amigos ando buscando una funcion en php que me permita cambiar las palabras de 3 o mas letras a mayusculas por eje: "venta de ...
  #1 (permalink)  
Antiguo 23/07/2010, 20:14
 
Fecha de Ingreso: julio-2007
Mensajes: 20
Antigüedad: 16 años, 9 meses
Puntos: 0
Funcio mayusculas en palabras de 3 o mas letras

Hola amigos ando buscando una funcion en php que me permita cambiar las palabras de 3 o mas letras a mayusculas por eje:

"venta de ford explorer en mexico" convierte a: "Venta de Ford Explorer en Mexico"

sin crear mayusculas 'de' y 'en' y palabras no mayores a 3 letras

se que puedo usar ucwords pero me pone mayuscula a todas las palabas, alguna sujerencia?
gracias
  #2 (permalink)  
Antiguo 23/07/2010, 20:40
Avatar de cotopaxi  
Fecha de Ingreso: noviembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Funcio mayusculas en palabras de 3 o mas letras

Podrías hacer un ciclo, donde mediante una especie de "Tokenizer" (es decir donde solo leas palabras ignorando espacios) compruebes el tamaño de tu cadena, si es mayor a 3, entonces usas esa función que me imagino te pone mayúscula la primer letra de tu palabra... bueno eso se me ocurre.
  #3 (permalink)  
Antiguo 23/07/2010, 20:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Funcio mayusculas en palabras de 3 o mas letras

Puedes hacer algo así
Código PHP:
Ver original
  1. <?php
  2. $str = 'venta de ford explorer en mexico';
  3. function ucwordsMoreThan3Chars(array $array){
  4.     foreach($array as $key => $value){
  5.         if(strlen($value) > 3){
  6.             $array[$key] = ucwords($value);
  7.         }
  8.     }
  9.     return implode(' ', $array);
  10. }
  11. echo ucwordsMoreThan3Chars(explode(' ', $str));

Edito:
También lo puedes hacer así, más corto
Código PHP:
Ver original
  1. <?php
  2. $str = 'venta de ford explorer en mexico';
  3. $arr = explode(' ', $str);
  4. array_walk($arr, create_function('&$value','if(strlen($value) > 3){$value = ucwords($value);}'));
  5. echo implode(' ', $arr);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 23/07/2010 a las 20:58
  #4 (permalink)  
Antiguo 23/07/2010, 20:54
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Funcio mayusculas en palabras de 3 o mas letras

bueno yo entiendo mas o menos para que lo kieres hacer pero creo que solo las que tengan dos letras y qu pasa si tu palabra inicial tubiera dos letras?? bueno yo penc algo separa la cadena con un explode(" ",$cadena); eso te convierte toda tu cadena en un array luego con un foreac concatenas la misma pero con la funcion ucfirst() y vez cuantos digitos tiene con strlen pero queda lo q te dig suerte

se me adelantaron jajaj bue´no suerte
  #5 (permalink)  
Antiguo 24/07/2010, 07:43
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Funcio mayusculas en palabras de 3 o mas letras

Hola

El problema que veo en usar explode sería, y pregunto, si encentra una cifra de tres o más dígitos ¿no daría error?. En tal caso parece mas conveniente usar expresiones regulares

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 24/07/2010, 07:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Funcio mayusculas en palabras de 3 o mas letras

Se podría usar expresiones también, pero explode no da problemas cuando encuentra espacios de más. Ejemplo
Código PHP:
Ver original
  1. <?php
  2. $str = 'venta de      ford explorer en mexico';
  3. $arr = explode(' ', $str);
  4. array_walk($arr, create_function('&$value','if(strlen($value) > 3){$value = ucwords($value);}'));
  5. echo implode(' ', $arr);
Y con expresiones regulares
Código PHP:
Ver original
  1. <?php
  2. $str = 'venta de      ford explorer en mexico';
  3. $arr = preg_replace('/(\w{3,})/ie', 'ucwords("$1")', $str);
  4. echo $arr;
Se ve mucho mejor con expresiones
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: letras, mas, mayusculas, palabras
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 08:13.