Hay veces en las que se quiere cortar un texto sin cortar por la mitad de una palabra, por ejemplo cuando usamos AJAX y queremos mostrar solo un par de líneas de la entrada de una noticia. Hay dos maneras de hacer esto: la primera (y quizá la más simple, pero no la mejor) es hacerlo en el servidor antes de que este devuelva los resultados al AJAX, pero en este caso nos podemos encontrar con que luego necesitamos el texto completo y eso implicaría una nueva llamada y con ello consumo de recursos.
Entonces nos queda la segunda opción: cortarlo según lo necesitemos en el script antes de mostrarlo. Para ello he escrito esta pequeña función que hace justamente eso. Recorta una cadena determinada a un largo determinado, sin cortar palabras por la mitad y con eso el texto queda un poco más presentable.
-
function trimText(string, largo)
-
{
-
largo = largo-3;
-
var newst = string.split(" ");
-
var contador = 0;
-
var finalstr = '';
-
-
for(var lar=0; lar<newst.length; ++lar) {
-
if(contador >= largo)
-
break;
-
else
-
{
-
contador += newst[lar].length;
-
finalstr += newst[lar]+' ';
-
if(finalstr.length-1 > largo)
-
{
-
finalstr = finalstr.substr(0, finalstr.indexOf(newst[lar], 0));
-
break;
-
}
-
}
-
}
-
return (finalstr != string) ?
-
finalstr.substr(0, finalstr.length-1)+'…' :
-
finalstr;
-
}
Y para llamarla:
-
var texto = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque sit amet nibh non metus bibendum sagittis. Suspendisse ante ligula, varius eu, ultrices sit amet, scelerisque vel, orci.'
-
var texto_cortado = trimText(texto, 50);
Listo, un mejor texto recortado.
estoy por intalar un sistemas de comentario en mi pagina web de esos que no usan B.D
pero cuando escriven corrido se sale del margen de la pagina desfigurandola lo que quiero es cortar la cadena de texto tras determinado numero de parrafo o bien sea de careteres mi pregunta es si este codigo me puede ayudar con ese problemita y si no como puedo hacerlo
la pg de prueva esta en http://www.kebonchemusic.com/comen2/index.php
En ese caso lo mejor es que cortes la cadena que te devuelve la base de datos, es decir que al cargar la página se corten las cadenas a un número máximo de caracteres. Hacerlo con JS no tiene ningún sentido en este caso.
el archivo prosesar comenetario no salio
es este
por favor si me pueden decir como incertar el codigo para cortar esta aplicasión
este es el index en donde se encuentra el texto que quiero cortar
Documento sin título
<?php
$comentarios = file("comentarios.txt");
$cont = count($comentarios);
for ($i=0; $i<=$cont; $i++){
echo "$comentarios[$i]“;
}
?>
Escribe tu nombre:
Escribe aquí tu comentario
y este es el archivo php que crea el comentari.txt
por favor demen sus repuesta es muy importante
No entiendo que es lo que pretendes hacer. Una mejor explicación me ayudaría a resolver tu problema.
Acabo de comprobar que tiene un pequeño bug, hay que reemplazar, esto:
if(finalstr.length-1 > largo)
{
finalstr = finalstr.substr(0, finalstr.indexOf(newst[lar], 0));
break;
}
Por esto:
if(finalstr.length-1 > largo)
{
finalstr = finalstr.substr(0, (finalstr.length-newst[lar].length));
break;
}
El problema es que ese indexOf() falla con ciertas cantidades por que al parecer el tamaño de la última palabra no se calcula bien, en fin, con eso funciona bien, es más lo acabo de implementar en uno de mis últimos proyectos.
Muy bueno, muy simple y muy eficaz. Gracias por compartirlo.
Saludos.