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);