Como limitar caracteres e manter palavras inteiras em strings no PHP.

Certamente você já se deparou com a dificuldade em limitar a quantidade de caracteres e não cortar palavras em títulos e resumos.

Função limitadora

Apresento uma função que quando aplicada é capaz de limitar a quantidade de caracteres e manter as palvras intactas. Seguem dois exemplos:

Frase original:

Hoje está um belo dia de sol e vamos comemorar meu aniversário.

Frase com caracteres limitados SEM uso da função:

Hoje está um belo dia de sol e vamos comem

Frase com caracteres limitados COM uso da função:

Hoje está um belo dia de sol e vamos…

Construindo a função

<?php

function trim_title_keep_words($title, $max_lenght, $more)  {
    // Title will remain untouched if character counut is smaller than max lenght
    // O título permanecerá intacto se a quantidade de caracteres for menor que o máximo estabeleido.
    if (strlen($title) <= $max_lenght) {
        return $title;
    }
    
    // Title is trimmed and word are kept intact
    // O título é cortado mas a última palavra permanece inteira                               
    $trimmed_title = substr($title, 0, $max_lenght);
    if ( substr($trimmed_title,-1,1) != ' ' ) {
        $trimmed_title = substr($trimmed_title, 0, strrpos($trimmed_title, " "));
    }
    // Adding read more to final                              
    $trimmed_title = $trimmed_title.$more;
    return $trimmed_title;
}                

Como usar essa função

  1. Identifique os parâmetros que serão usados na função: trim_title_keep_words($title, $max_lenght, $more)

    $title -> use a função do WordPress para pegar o título

    $max_lenght -> defina quantos characteres devem ter no máximo

    $more -> Defina que símbolo quer usar para indicar que o título foi cortado. Exemplo.: …, >>, +

  2. Aplique a função e imprima o resultado: 
    $new_title = trim_title_keep_words( get_the_title(), 30, ‘…’);
    echo $new_title;

Resultado esperado:

Título cortado SEM essa função: “Olá meu mundo li…”

Título cortado COM essa função: “Olá meu mundo…”

Você pode encontrar esse código meu GitHub

Deixe uma resposta