Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/04/2005, 14:01
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Yo también hice una función utilizando wordwrap(). Y ya sin darme cuenta la vengo utilizando desde hace bastante tiempo.
Código PHP:
function limitar_texto($texto$max_long){
    
$texto wordwrap($texto$max_long'<|*|*|>'); // separar en $max_long con ruptura sin cortar palabras.
    
$posicion strpos($texto'<|*|*|>'); // encontrar la primera aparición de la ruptura.
    
$texto substr($texto0$posicion).'...'// tomar la porción antes de la ruptura y agregar '...'
    
return $texto;    

Pero como verán... lo que hace es utilizar el wordwrap e ir añadiendo una ruptura <|*|*|> cada $max_long sin cortar palabras.
Lo que sigue es más sencillo. Me parece que la función de Cluster irá más rápido porque trabaja directamente sólo con una pequeña porción del texto.
O sea, en textos pequeños no habrá diferencia... pero para textos muy largos...

De todos modos en la función de Cluster yo utilizaría array_pop() para deshacernos directamente del último elemento. O sea, la función de Cluster podría quedar mejor así:
Código PHP:
function cortar_frase($frase_entrada$cortar){
    
$frase_corta substr($frase_entrada0$cortar); // obtener la frase cortada.
    
$palabras explode(' '$frase_corta); // obtener array con las palabras.
    
array_pop($palabras); // le quitamos la ultima palabra.
    
$frase_salida implode(' ',$palabras); //  y concatenamos con el espacio hacia una cadena.
    
$frase_salida .= "..."// se añaden los puntos suspensivos a la cadena obtenida..
    
    
return $frase_salida;

¿cometarios?

Saludos