Limitar numero de caracteres y poner un leer mas..

K

Hola a todos, estoy intentando hacer un limitador de caracteres con un leer mas, y cuando se expande el texto, poner un cerrar... haciendo una consulta a la base de datos de donde se saca el texto y no tengo ni idea de como hacerlo, he buscado por nuestro queridisimo google y no encuentro nada que me sirva ya, todo esta desactualizado y no me funciona.
Alguien me podría echar una mano?

sh31k

En serio no encuentras en google como hacerlo? Hay mil guías eh? xD

Puedes usar substr() con PHP, pero en mi opinión lo mejor es que hagas un explode de la cadena y controles por número de palabras, saltos de línea, puntos etc.

1 respuesta
Cobre

https://developer.mozilla.org/es/docs/Web/CSS/text-overflow

text-overflow: ellipsis;

Puedes añadirlo a una clase y quitarle y ponersela al div

Merkury

#2 usar un explode es una cagada para eso.

Haces un ternario con strlen y dentro en el true haces sprintf para imprimir el resultado del substr.


$truncatedText = strlen($text) >= $limit ? sprintf(“%s...”, substr($text, 0, $limit)) : $text;

Yo personalmente haria los $limit con +/- X para cortar siempre un poco mas o menos y que no se te quede por ejemplo solo una letra fuera

1 respuesta
sh31k

#4 Teniendo en cuenta que a lo mejor le interesa que las frases tengan sentido, pues quizás no sea tan cagada.

En casos reales de clientes, forzar a X letras con palabras completas lo normal es que queden bastante mal redactadas previo al leer más. Al final hemos tenido que usar explode en algunos casos para controlar todas las variables posibles, por eso le decía.

Realmente para hacer eso que pones es mejor hacerlo con CSS no? xd

RaymaN

Si el texto contiene html, después de cortar conviene sanear con tidy.

1
eXtreM3

Y después le pasas un break-word para que no queden caracteres sueltos y corte por palabras.

Usuarios habituales