Cortar texto y añadir elipsis de forma inteligente

19 September 2010 – 14:00

Primer post pseudo técnico sobre drupal, yuhu! 3oh colabora con la comunidad!

En muchas ocasiones nos vemos en la necesidad de recortar texto desde código, bien porque estamos formateando una view, porque estamos imprimiendo a mano campos CCK o por cualquier otra razón, y no queremos que sobrepase de cierto número de caracteres.

En estos casos se suele utilizar la función substr de PHP, que nos devuelve los primeros n caracteres de un string. Peeero esta función no tiene en cuenta si estamos cortando un string con código HTML dentro, o si está cortando una palabra por la mitad, ni añade una elipsis (los tres puntos) en el caso de que hayamos recortado.

Solución: utilizar la función views_trim_text; con esta función podremos advertir que trabajamos con texto HTML, añadir elipsis (solo cuando el texto se recorte), no cortar ninguna palabra, etc…

Y ahora un par de ejemplos. Imaginemos que tenemos la siguiente cadena:

$cadena = 'En un lugar de la <strong>Mancha</strong>, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor.'

Probando diferentes parámetros, obtenemos las siguientes salidas:

views_trim_text(
  array(
    'max_length' => 20,
    'word_boundary' => true,
    'ellipsis' => true,
    'html' => true),
  $cadena);
// (output) 'En un lugar de la...'

Recorta el texto perfectamente. Vamos a ponerle en un aprieto…

views_trim_text(
  array(
    'max_length' => 40,
    'word_boundary' => false,
    'ellipsis' => true,
    'html' => true),
  $cadena);
// (output) 'En un lugar de la <strong>Manc...</strong>'

¡Perfecto! Nos respeta el strong y además corta la palabra por la mitad.

Nota: esta función solamente la podremos utilizar si tenemos instalado en nuestro sistema el módulo views, pero vaya, si en tu instalación Drupal no usas views, mal vamos…


Publicado originalmente en mi antiguo blog, 3oheme.com, y recuperado de archive.org.

This is the personal website of Ignacio Palomo Duarte, Product Manager. If you're looking for my portfolio and more information just have a look at the homepage, and if you liked this article maybe you can share it on Bluesky.