Foros del Web » Programando para Internet » PHP »

formatear texto

Estas en el tema de formatear texto en el foro de PHP en Foros del Web. Hola amigos, necesito una ayudita, para dar formato en texto he puesta funcion que hace que la primera letra sea en mayusculas, el caso es ...
  #1 (permalink)  
Antiguo 28/03/2005, 13:00
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Pregunta formatear texto

Hola amigos, necesito una ayudita, para dar formato en texto he puesta funcion que hace que la primera letra sea en mayusculas, el caso es que quiero que cuando haya un punto . la siguiente tb sea mayusculas.
Código PHP:
// esta es la funcion
$texto ucfirst(strtolower($texto)); 
imagino que tendre que hacer un exploit del texto hasta cada punto y luego ponerle otra vez eso, pero no se como se hace.
un saludo y gracias por vuestra ayuda.
__________________
Seguro que ahora me sale mejor!
  #2 (permalink)  
Antiguo 28/03/2005, 14:50
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años
Puntos: 0
prueba con
Código PHP:
$texto=str_replace("\.( )*([a-z])",". ".strtoupper("\\2"),$texto); 
aunque no estoy muy seguro de que funcione ahí strtoupper con el fragmento encontrado...



la otra oción, como tú dices, serïa más o menos esto:
Código PHP:
$frases=explode(".",$texto);
$texto="";
$i=1;
foreach (
$frases as $frase){
if(
$i>1){
$texto.=".";
}
$texto.=ucfirst(strtolower($frase));
$i++;

no he podido probar ninguno de los 2, pero si no funcionan tendrá que ser algo muy parecido a esto

Última edición por neo_1899_fcb; 28/03/2005 a las 14:51
  #3 (permalink)  
Antiguo 28/03/2005, 15:13
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
No lo hace con ninguna de las 2 opciones, gracias de todos modos :)
__________________
Seguro que ahora me sale mejor!
  #4 (permalink)  
Antiguo 28/03/2005, 17:29
Avatar de braulito  
Fecha de Ingreso: abril-2004
Ubicación: Cusco - Perú
Mensajes: 597
Antigüedad: 20 años
Puntos: 8
Creo que lo que neo_1899_fcb trataba de hacer era esto:
Código PHP:
$texto=preg_replace("\.( )*([a-z])",". ".strtoupper("\\2"),$texto); 
__________________
Braulio Soncco
braulio at buayacorp dot com
Buayacorp - Programación y Diseño

Última edición por braulito; 28/03/2005 a las 17:32
  #5 (permalink)  
Antiguo 29/03/2005, 04:14
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Cita:
Iniciado por braulito
Creo que lo que neo_1899_fcb trataba de hacer era esto:
Código PHP:
$texto=preg_replace("\.( )*([a-z])",". ".strtoupper("\\2"),$texto); 
me da este error :
Warning: Delimiter must not be alphanumeric or backslash
__________________
Seguro que ahora me sale mejor!
  #6 (permalink)  
Antiguo 29/03/2005, 07:13
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años
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
  #7 (permalink)  
Antiguo 29/03/2005, 07:54
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
funciona a la perfecion

como se te ocurre esas cosas, yo no tengo cabeza para tanto
__________________
Seguro que ahora me sale mejor!
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




La zona horaria es GMT -6. Ahora son las 05:19.