Foros del Web » Programando para Internet » PHP »

[APORTE] Capitaliza adecuadamente un texto.

Estas en el tema de [APORTE] Capitaliza adecuadamente un texto. en el foro de PHP en Foros del Web. Hola amigos, hace un momento hice una pequeña clase para resolver un pequeño problema de capitalización. Es muy básica y no desarrollada para funcionar correctamente ...
  #1 (permalink)  
Antiguo 06/02/2012, 00:40
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
[APORTE] Capitaliza adecuadamente un texto.

Hola amigos, hace un momento hice una pequeña clase para resolver un pequeño problema de capitalización. Es muy básica y no desarrollada para funcionar correctamente en todos los casos posibles, pero si que es intuitiva y realiza su cometido.


Para que sirve:

-> Un texto en el que se requiere capitalizar sola la primer letra de una cadena, También la que es seguida de signos de puntuación cualesquiera como: (punto, dos puntos, signo de admiración, interrogación, salto de linea, etc...)

-> Cuando el uso de MAYUSCULAS ES EXCESIVO

-> No TRANSFORMA palabras bien capitalizadas por el usuario, como las siglas de un objeto: Por ejemplo: E.U.A., U.N.A.M. y las que contengan esta estructura se conservarán igual.

-> También los sustantivos propios bien capitalizados no sufrirán transformación alguna.

Lo hice lo más sencillo, corto y fácil posible.
Código PHP:
Ver original
  1. class capitalization {
  2.  
  3.     public function hasCapitalized($word) {
  4.         if (preg_match("/^[A-Z0-9]+[A-Z0-9\.]+[\.]+$/", $word))
  5.             return true;
  6.         if (preg_match("/^[A-Z]{1}[^A-Z]+$/", $word))
  7.             return true;
  8.     }
  9.  
  10.     public function isEndOfSentence($subject) {
  11.         if (preg_match("/^(.)*[\.\x0A]+$/", $subject))
  12.             return true;
  13.     }
  14.  
  15.     public function capitaliza($text) {
  16.         $words = preg_split("/[\x20]+/", $text);
  17.         $bean = true;
  18.         foreach ($words as $key => $value) {
  19.             if ($bean)
  20.                 $words[$key] = ucwords(strtolower($value));
  21.             else
  22.                 $words[$key] = (hasCapitalized($value) ? $value : strtolower($value) );
  23.  
  24.             $bean = (isEndOfSentence($value) ? true : false);
  25.         }
  26.         return $words;
  27.     }
  28.  
  29. }

ejemplo de uso para los que no saben POO

Código PHP:
Ver original
  1. $obj = new capitalization;
  2.  
  3. $text = "estE TExTo TIENe uN MAL manEjo DE MinUsCulas y MayusCulas. el texto seRa CAPiTALIZaDO. la Primer PalAbra que EstA DespuEs de uN puNto o SalTo de LINEa \n será CapitaLizada.
  4.    palabras COMPLETAMENTE EN MAYUSCULAS son transFormAdas a MinusCulas, solo las PalabrAs bien CapitaLizadas como los SUSTANtiVos PropIos: México, España, Brazil, etc... se conservan ASi, tambiEn se conserva CapitalizACION
  5.    en AbrebiaTURAS COMO E.U.A.";
  6.  
  7. print_r($obj->capitaliza(utf8_decode($text)));

IMPRIME:

Cita:
Array
(
[0] => Este
[1] => texto
[2] => tiene
[3] => un
[4] => mal
[5] => manejo
[6] => de
[7] => minusculas
[8] => y
[9] => mayusculas.
[10] => El
[11] => texto
[12] => sera
[13] => capitalizado.
[14] => La
[15] => Primer
[16] => palabra
[17] => que
[18] => esta
[19] => despues
[20] => de
[21] => un
[22] => punto
[23] => o
[24] => salto
[25] => de
[26] => linea
[27] =>

[28] => Será
[29] => capitalizada.


[30] => Palabras
[31] => completamente
[32] => en
[33] => mayusculas
[34] => son
[35] => transformadas
[36] => a
[37] => minusculas,
[38] => solo
[39] => las
[40] => palabras
[41] => bien
[42] => capitalizadas
[43] => como
[44] => los
[45] => sustantivos
[46] => propios:
[47] => México,
[48] => España,
[49] => Brazil,
[50] => etc...
[51] => Se
[52] => conservan
[53] => asi,
[54] => tambien
[55] => se
[56] => conserva
[57] => capitalizacion


[58] => En
[59] => abrebiaturas
[60] => como
[61] => E.U.A.
)
Un Saludo.

=========================================
P:D:

Para añadir más signos de puntuación, los cuales son tomados como semilla para indicar que la palabra siguiente a esta será capitalizada.

situarse en la linea 11 de la clase

Código PHP:
if (preg_match("/^(.)*[\.\x0A]+$/"$subject)) 
Yo he agregado solamente el punto (\.) y el salto de linea (\x0A), puedes agregar los que consideres.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: usuarios
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 22:28.