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 originalclass capitalization {
public function hasCapitalized($word) {
if (preg_match("/^[A-Z0-9]+[A-Z0-9\.]+[\.]+$/", $word)) return true;
return true;
}
public function isEndOfSentence($subject) {
return true;
}
public function capitaliza($text) {
$bean = true;
foreach ($words as $key => $value) {
if ($bean)
else
$words[$key] = (hasCapitalized
($value) ?
$value : strtolower($value) );
$bean = (isEndOfSentence($value) ? true : false);
}
return $words;
}
}
ejemplo de uso para los que no saben POO
Código PHP:
Ver original$obj = new capitalization;
$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.
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
en AbrebiaTURAS COMO E.U.A.";
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.