Foros del Web » Programando para Internet » PHP »

Como truncar un string a n-caracteres sin truncar palabras [APORTE]

Estas en el tema de Como truncar un string a n-caracteres sin truncar palabras [APORTE] en el foro de PHP en Foros del Web. Cuando generamos dinamicamente el TITLE de la pagina podemos pasarnos de los recomendables 80 caracteres y asi en muchos casos... nos podemos pasar de la ...
  #1 (permalink)  
Antiguo 06/09/2009, 21:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
De acuerdo Como truncar un string a n-caracteres sin truncar palabras [APORTE]

Cuando generamos dinamicamente el TITLE de la pagina podemos pasarnos de los recomendables 80 caracteres y asi en muchos casos... nos podemos pasar de la longitud deseada.

Por que no usar substr() ? pues..... porque podria cortar la ultima palabra

La solucion ?

Código PHP:
Function hasta_n_chars ($str,$n){    
    
$pals explode (' ',$str);
    
$str2='';
    foreach (
$pals as $pal){
      
$ant  $str2;
      
$str2 $str2.' '.$pal;
      if (
strlen($str2)>$n){
        
$str2=$ant;
        break;
      }
    }
    return 
$str2;
  } 
Se le especifica la cadena, el numero maximo de caracteres y trunca la cadena en la longitud deseada dejando palabras enteras

Última edición por bigwhite; 06/09/2009 a las 21:09
  #2 (permalink)  
Antiguo 06/09/2009, 21:49
 
Fecha de Ingreso: julio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Como truncar un string a n-caracteres sin truncar palabras [APORTE]

Gracias, no se me habia ocurrido hacerlo de esa forma.
Modifique un poco la funcion para que agregue una cadena al final del recorte (por ejemplo puntos suspensivos)

Código PHP:
    function truncate ($str$length=30$trailing='...') {
        
//    Cadena a truncar, Longitud a truncar (por defecto 30), Cadena a añadir (por defecto puntos suspensivos)
        
        
if (strlen($str)>$length) { //Si el largo de la cadena supera lo que especificamos
            
$pals explode (' ',$str); //Crea un array donde cada elemento es una  palabra
            
$str2='';
            foreach (
$pals as $pal){  //Recorre el array y va agregando cada palabra en $str2 hasta que el largo de $str2 supera el largo maximo
              
$ant  $str2;
              
$str2 $str2.' '.$pal;
              if (
strlen($str2)>$length){
                
$str2=$ant $trailing;
                break;
              }
            }
            return 
$str2
        } else { 
//Si la cadena está dentro del tamaño especificado la devuelve sin hacer cambios
            
return $str;
        }
    } 
Espero les sirva..
Saludos!
  #3 (permalink)  
Antiguo 06/09/2009, 21:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Como truncar un string a n-caracteres sin truncar palabras [APORTE]

Me alegro te haya gustado... neiker
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 08:36.