Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/03/2005, 07:13
neo_1899_fcb
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
despues de darle muchas vueltas y comprobar que, contra toda lógica, ucfirst no se ejecuta dentro de un bucle (solo la primera vez), he dado con una solución más compleja pero igual de valida.

per no hay mal que por bien no venga, ya que de esta forma funciona tambien si tras el punto hay espacios, tabulaciones y saltos de linea, además de aceptar caracteres acentuados.

la función es
Código PHP:
function formatear($string)
{
preg_match_all("/\.( )*(\t)*(\n)*([A-Za-zÀÁÄÇÈÉËÌÍÎÑÒÓÖÙÜÚàáäçèéëìíïñòóöùüú])/ms",$string,$array);

foreach(
$array[0] as $k=>$v){
$letra=substr($v,-1);
$mayuscula=strtr(strtoupper($letra), "àáäçèéëìíïñòóöùüú" "ÀÁÄÇÈÉËÌÍÎÒÓÖÙÜÚ");
$old=$v;
$new=str_replace($letra,$mayuscula,$old);
$string=str_replace($old,$new,$string);
}

$letra=substr($string,0,1);
$mayuscula=strtr(strtoupper($letra), "àáäçèéëìíïñòóöùüú" "ÀÁÄÇÈÉËÌÍÎÑÒÓÖÙÜÚ");
$string=ereg_replace("^$letra",$mayuscula,$string);

return 
$string;


y para obtener el resultado tan solo tienes que hacer:
Código PHP:
$texto=formatear($texto); 

Última edición por neo_1899_fcb; 29/03/2005 a las 07:23