Truncar (cortar) cadenas en php

Hola, en estos días he estado trabajando en un plugin para el Open Journal Systems el cual agrega etiquetas meta (metatags) para redes sociales (Open Graph y Twitter Cards). La cuestión es que estas etiquetas (y otras relacionadas con el SEO) requieren una descripción con un número limitado de caracteres (140 en la de twitter) mientras que los textos de los resúmenes del OJS suelen ser mucho mas grandes, por lo que necesitaba una manera de acortarlo de la forma mas amigable posible; esto tenia una dificultad añadida y es que algunos resúmenes contienen etiquetas HTML como por ejemplo imágenes al inicio, lo cual le añadía una complicación extra.

Finalmente di con la función que hoy les comparto, la cual elimina las etiquetas HTML, corta el texto en la cantidad de caracteres que deseamos respetando las palabras, es decir, que nunca va a cortar el texto dejando una palabra a medias y agrega al final de la cadena ya cortada los caracteres que deseemos (como “…” ), he aquí la función:

<?php
    function truncate ($string, $length=100, $strip_tags=True, $append="&hellip;"){
        
        if($strip_tags){
            $string = strip_tags($string);
        }
        
        $string = trim($string);

        if(strlen($string)>$length){
            $string = wordwrap($string, $length);
            $string = explode("\n", $string, 2);
            $string = $string[0].$append;
        }

        return $string;
    }
?>

Espero que les sea útil.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*