Saltar al contenido
Codifíca.me | Desarrollo web | Programación

PHP – Como Cortar un Texto a un largo determinado

10 septiembre, 2019
php

Muchas veces cuando estamos realizando nuestras páginas y aplicaciones necesitamos presentar solo una porción del texto ( de un String ), como por ejemplo cuando tenemos un artículo y sólo queremos mostrar un pequeño extracto en alguna parte.

/**
* Return sub string sin etiquetas HTML y puntos suspensivos al final
* @param $string String 
* @param $length Largo que queremos el substring
* @return String con ...
*/

public function getSubString($string, $length=NULL)
{
    //Si no se especifica la longitud por defecto es 50
    if ($length == NULL)
        $length = 50;
    //Primero eliminamos las etiquetas html y luego cortamos el string
    $stringDisplay = substr(strip_tags($string), 0, $length);
    //Si el texto es mayor que la longitud se agrega puntos suspensivos
    if (strlen(strip_tags($string)) > $length)
        $stringDisplay .= ' ...';
    return $stringDisplay;
}

Yo suelo colocar el nombre de las variables en mis funciones en inglés, por costumbre y por estandar. Veamos como está compuesta la función:

La función acepta dos parámetors $string que es el texto que queremos acortar y length que es el largo que queremos que nos devuelva el nuevo texto.

Utilizamos  la función substr de PHP, esta función acepta los siguientes parámetros:

string substr ( string $string , int $start [, int $length ] )

Un $string que es el texto que queremos acortar y los otros dos parámetros es donde queremos comenzar y donde queremos que finalice. Adicionalmente utilizamos la función strip_tags que elimina las etiquetas HTML del texto, esto nos sirve para dos cosas la primera es para quitar cualquier formato del texto y segundo nos sirve para eliminar cualquier etiqueta que nos pueda ocasionar problemas ya sea al guardar el texto en una base de datos o al utilizarlo como una variable en nuestro código. Si quieres conservar las etiquetas simplemente quita strip_tags y deja solo la variable $string.

Tambien damos un valor por defecto a la longitud (length) en caso de que no se le pase este valor a la función.

Por último simplemente verificamos que si el largo del texto es mayor que el largo al que lo queremos cortar le agregue puntos suspensivos al final.

Forma de uso:

//El string que queremos recortar con etiquetas HTML
$texto = "<p>Hay dos cosas infinitas: el Universo y la <strong>estupidez humana</strong>. Y del Universo no estoy seguro.</p>"
//La función colocando un largo de 42 caracteres contando los espacios.
getSubString($texto, 42)

Obtendremos:

Hay dos cosas infinitas: el Universo y la ...

Es una función bastante sencilla y útil en muchos casos.

Si tienes cualquier duda, sugerencia o quieres simplemente saludar, por favor deja un comentario.