Comunidad de diseño web y desarrollo en internet online

PHP: Como recortar un texto sin cortar la ultima palabra

Citar            
MensajeEscrito el 17 Oct 2005 11:03 am
Hola:
quisiera hacer la tipica funcion de substr() pero sin que recortara la ultima palabra que entra dentro de los limites, me explico:

Código :

if (strlen($Texto) > 200){
  echo substr($Texto,0,200).'... +';
}else{
  echo substr($Texto,0,200);
}


Esto recorta el texto a 200 y si se pasa añade "... +". Lo que quiero es que añada esto pero sin recortar una palabra por la mitad, es decir buscar el ultimo espacio q se encuentre y entonces recortar por ahi. He mirado explode y varias posibilidades mas pero no me aclaro sobre cual seria la manera de hacerlo. Espero me puedan ayudar.

Saludos!

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

msie
Citar            
MensajeEscrito el 17 Oct 2005 12:05 pm
Comprueba hacia atras.

Coge esa cadena (que en teoria es de 200 characteres) y comprueva desde el final hasta que encuentres un espacio. Cuando lo encuentres guarda la posición y vuelve a hacerle un substr hasta donde lo encontraste.

Por Mania

Claber

1716 de clabLevel

3 tutoriales
2 articulos

 

Astrub

firefox
Citar            
MensajeEscrito el 18 Oct 2005 09:54 am
y como compruebo cuando tengo el primer espacio? quiero decir que cada letra no esta en una posicion de un array ni nada parecido.
Como se hace?

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 18 Oct 2005 02:41 pm
Eso del ciclo es buena idea. Pero creo que lo mejor es siempre analizar lo que queremos hacer, y revisar si no existen algunas clases o métodos, ya diseñados que nos faciliten la labor. Por ejemplo eso que pides, bien puede quedar optimizado, y usando una sola línea de código, algo del tipo:

Código :

TextoResumen = Texto.substr(0,Texto.substr(0,MaxLENGTH).lastIndexOf(" "));



Ejemplo de uso:

Código :

Texto="Lorem ipsum pro te harum pertinax constituam, nec munere labores eloquentiam an. Ut odio feugait interesset mei, vix deserunt periculis ne. Qui id magna decore."
MaxLENGTH=80;
TextoResumen = Texto.substr(0,Texto.substr(0,MaxLENGTH).lastIndexOf(" "));
trace(TextoResumen);


Saludos :)

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 18 Oct 2005 02:55 pm
Ehm, la respuesta esta en ActionScript(Dano se dice a sí mismo, no vuelvas a responder un topic, mientras juegas Splinter Cell), solo es cosa de cambiarla a php. :lol:

Bueno de una vez se las doy: :lol:

Código :

<?
$Texto="Lorem ipsum pro te harum pertinax constituam, nec munere labores eloquentiam an. Ut odio feugait interesset mei, vix deserunt periculis ne. Qui id magna decore.";
$MaxLENGTH=25;
$TextoResumen = substr($Texto,0,strrpos(substr($Texto,0,$MaxLENGTH)," "));
echo $TextoResumen;
?>

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 18 Oct 2005 03:58 pm
Me resolvió todo.
Muchisimas gracias :wink:

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 18 Oct 2005 10:27 pm

Dano escribió:

(Dano se dice a sí mismo, no vuelvas a responder un topic, mientras juegas Splinter Cell),

:lol: :lol: :lol: :lol: Ahora si me voy a morir de risa
:lol: :lol: :lol: :lol:

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 10 Abr 2013 04:29 pm
Excelente respuesta Dano!!! He visto en internet mucho código que no esta bien pensado y no se toman en cuenta las herramientas disponibles en todos los lenguajes y APIs. Siempre es bueno analizar el problema, buscar la solución por partes y mantener tu código lo más limpio posible

Por daniel.santarriaga

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.