Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/12/2012, 15:48
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Información Aporte: Funcion para Capitalizar Texto (Avanzada)

EDITO ESTE TEMA: 22/05/2015

La función anterior era bastante fea, y como me llegan notificaciones de que a varias personas les resulta útil, publico una actualización mas prolija.
Esta funcion lo que hace es pasar a mayuscula la primer letra de cada palabra, dejando en minuscula el resto, pero teniendo en cuenta que si una palabra es un articulo del lenguaje, por ej: "a", "la", "los", etc debe permanecer en minúsculas, a exepcion de que sea la primer palabra de una frase, en ese caso debe tener la primer letra en mayúscula.

Código PHP:
Ver original
  1. <?php
  2.  
  3. function Capitalizar_Semantica($text) {
  4.  
  5.     // Articulos del lenguaje, no llevan mayusculas a menos que esten luego de un signo de puntuacion.
  6.     $articulos = array(' a',' al',' de',' del',' lo',' el',' la',' los',' las',' un',' una',' unos',' unas');
  7.     // Signos de puntucacion, despues de uno de estos va mayuscula.
  8.     $puntucacion = array('.');
  9.  
  10.     $text = mb_convert_case(trim(str_replace("  ", " ", $text)), MB_CASE_TITLE, "UTF-8");
  11.  
  12.     // Identificar cada signo de puntucion.
  13.     $text = str_replace(array_map(function($e) { return "$e "; }, $puntucacion), $puntucacion, $text);
  14.     $text = str_ireplace($articulos, $articulos, $text);
  15.     $text = str_replace($puntucacion, array_map(function($e) { return "$e "; }, $puntucacion), $text);
  16.  
  17.     return $text;
  18. }

Los comentarios que siguen a continuación, fueron hechos sobre la función original, muchas de las sugerencias hechas están ya implementadas en esta nueva función.

Saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 22/05/2015 a las 09:53 Razón: Update.