✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como truncar facilmente texto em PHP

18

Se você trata o WordPress exclusivamente como um aplicativo de blog ou, mesmo em um sentido mais liberal, um sistema de gerenciamento de conteúdo, provavelmente está acostumado a usar o editor ou o campo de trecho para escrever um teaser e introduzir um link Leia mais.

WordPress para aplicativos da Web (novamente)

Para aqueles que lêem este site há algum tempo, estou especificamente interessado em usar o WordPress como base para o desenvolvimento de aplicativos da web (veja também this, this, this e this ).

No momento deste post, este é um artigo que tem cerca de seis anos.

Portanto, há momentos em que o conteúdo que você renderizará no front-end pode vir de uma fonte de terceiros.

Voltar para o conteúdo

Ou seja, o aplicativo funciona assim:

  1. entre em contato com uma API de terceiros,
  2. importar dados da chamada e analisá-los conforme necessário,
  3. gravá-lo no banco de dados,
  4. renderizar as informações no front-end quando solicitado.

Há muito que pode acontecer entre cada uma das etapas acima, mas a principal coisa que quero compartilhar neste post é uma maneira eficaz de truncar texto facilmente usando PHP para renderizar no front-end.

Isso é útil para fornecer teasers, links para sites de terceiros e muito mais, sem a necessidade de escrever ou editar conteúdo manualmente.

Para dar um exemplo de caso de uso para a função que vou compartilhar, é útil ter alguns requisitos. Eles são arbitrários para este post, mas a implementação deve ser concreta o suficiente para que você possa colocar isso no post sem problemas.

Vamos assumir:

  • estamos extraindo texto de uma API de terceiros,
  • os dados são armazenados em algum lugar dentro do banco de dados,
  • os dados são texto simples (sem marcação ou qualquer outro tipo de entidade baseada na web na estrutura),
  • precisamos de uma função que aceite o texto e um comprimento para truncar o texto.

Dados esses requisitos, podemos configurar uma função para aceitar texto e um comprimento de argumentos. Se o texto for menor ou igual ao comprimento especificado, não há nada a fazer; caso contrário, podemos truncar o texto para o comprimento especificado e adicionar elipses à direita.

Aqui está o código:

<?php

/**
 * Truncates the specified text to the specified length to the last whole word and
 * adds ellipses to the end of the truncated string.
 * 
 * @param string $text The text to truncate.
 * @param int $length The maximum allowed length of the text.
 * @return string The text if it's less than the length of the specified length or the text truncated to the specified length.
 */
public function truncate($text, $length)
{
    if ($length >= strlen($text)) {
      return $text;
    }

  return preg_replace(
        "/^(.{1,$length})(s.*|$)/s",
        '1...',
        $text
    );
}

Implementações para isso no contexto do WordPress podem vir da leitura de dados armazenados em tabelas personalizadas, nos metadados do post, na tabela do post ou basicamente em qualquer lugar em que o texto bruto seja armazenado e você queira renderizá-lo no front-end .

Caso haja outro conteúdo no texto, como HTML ou outras entidades, pode ser necessário fazer concessões. Se for no WordPress, existem filtros e outras formas de manipular esses dados antes de truncar o texto, mas isso está além do ponto de truncar facilmente o texto em PHP, certo?

Então, pelo menos, use isso puramente para texto e, no máximo, faça concessões para outros tipos de conteúdo no texto antes de passá-lo para preg_replace e você deve estar pronto para ir.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação