Inicio » Blog » PHP

14 enero, 2025

Recortar un texto con PHP

Crearemos una función cuyo objetivo es recortar un texto que tendrá dos parámetros de entrada el texto y el límite. Fácil de usar en una aplicación web

Suscríbete a nuestro canal en Youtube

Suscríbirse

Hola, en ocaciones necesitamos que un texto sea recortado  y al final del texto recortado le asigna o concatene tres puntos suspensivos. Pues bien es fácil aquí tenemos un sencilla solución que te puede ayudar.

Función para recortar un texto en PHP

Claro! Aquí tienes una función sencilla en PHP para recortar texto o párrafos, junto con explicaciones y ejemplos:

<?php

function recortarTexto(string $texto, int $longitudMaxima, string $sufijo = '...') : string
{
    // 1. Elimina espacios en blanco innecesarios al inicio y final
    $texto = trim($texto);

    // 2. Verifica si el texto ya es menor o igual a la longitud máxima
    if (mb_strlen($texto) <= $longitudMaxima) {
        return $texto; // No se necesita recortar
    }

    // 3. Recorta el texto a la longitud máxima
    $textoRecortado = mb_substr($texto, 0, $longitudMaxima);

    // 4. Asegura que no termine en una palabra incompleta
    $ultimoEspacio = mb_strrpos($textoRecortado, ' ');
    if ($ultimoEspacio !== false) {
        $textoRecortado = mb_substr($textoRecortado, 0, $ultimoEspacio);
    }

    // 5. Agrega el sufijo (por defecto "...")
    return $textoRecortado . $sufijo;
}

// Ejemplos de uso
$textoLargo = "Este es un texto de ejemplo muy largo que necesita ser recortado para mostrarse en algún lugar con espacio limitado.";
$textoCorto = "Texto corto.";
$textoSinEspacios = "Textolargosin espacios";


echo "Texto original: " . $textoLargo . "<br>";
echo "Texto recortado: " . recortarTexto($textoLargo, 50) . "<br>"; // Usando el sufijo predeterminado "..."
echo "Texto recortado con sufijo personalizado: " . recortarTexto($textoLargo, 50, ' [leer más]') . "<br>";
echo "Texto original: " . $textoCorto . "<br>";
echo "Texto recortado: " . recortarTexto($textoCorto, 50) . "<br>"; // No se recorta porque es más corto que el limite
echo "Texto original: " . $textoSinEspacios . "<br>";
echo "Texto recortado: " . recortarTexto($textoSinEspacios, 10) . "<br>"; // Recorta sin palabra incompleta
?>

 

Explicación paso a paso:

  1. function recortarTexto(string $texto, int $longitudMaxima, string $sufijo = '...') : string:

    • Define la función recortarTexto que toma tres argumentos:

      • $texto: La cadena de texto que se va a recortar.

      • $longitudMaxima: La longitud máxima permitida del texto recortado.

      • $sufijo: El texto que se agregará al final del texto recortado (por defecto es "...", pero puedes personalizarlo).

    • : string: Indica que la función retorna una cadena de texto.

  2. $texto = trim($texto);:

    • Utiliza la función trim() para eliminar cualquier espacio en blanco al inicio o al final de la cadena.

  3. if (mb_strlen($texto) <= $longitudMaxima) { return $texto; }:

    • Utiliza mb_strlen() para calcular la longitud del texto correctamente, considerando caracteres multi-byte.

    • Si el texto ya es menor o igual que la longitud máxima, se devuelve el texto original sin modificar.

  4. $textoRecortado = mb_substr($texto, 0, $longitudMaxima);:

    • Utiliza mb_substr() para recortar el texto a la longitud máxima especificada, empezando desde la posición 0.

  5. $ultimoEspacio = mb_strrpos($textoRecortado, ' ');

    • Busca la posición del último espacio en $textoRecortado para evitar dejar palabras incompletas al cortar.

    • mb_strrpos() funciona correctamente con caracteres multi-byte.

  6. if ($ultimoEspacio !== false) { $textoRecortado = mb_substr($textoRecortado, 0, $ultimoEspacio); }:

    • Si se encuentra un espacio, se recorta el $textoRecortado hasta esa posición.

  7. return $textoRecortado . $sufijo;:

    • Agrega el sufijo al texto recortado y lo retorna.

Puntos Clave:

  • mb_strlen() y mb_substr(): Estas funciones son esenciales para trabajar con cadenas de texto que pueden contener caracteres multi-byte (como acentos, caracteres especiales, etc.). Si no usas estas funciones en un entorno donde puedes tener caracteres que ocupan más de un byte, podrías tener problemas con el recorte.

  • Sufijo Personalizable: Puedes cambiar el sufijo a lo que desees, como "[leer más]" o cualquier otro texto que tenga sentido en tu contexto.

  • Palabras Completas: La función busca el último espacio para evitar cortar palabras por la mitad.

  • Manejo de texto corto: La función maneja correctamente los casos donde el texto es más corto que la longitud máxima.

  • Limpieza inicial: La función elimina los espacios en blanco adicionales al inicio y final del texto.

Cómo utilizarlo:

  1. Copia el código PHP en un archivo (por ejemplo, recortar_texto.php).

  2. Abre el archivo en tu navegador o ejecútalo desde la línea de comandos de PHP.

  3. Ajusta los argumentos de la función recortarTexto (el texto, la longitud máxima y el sufijo) según tus necesidades.

Esta función te proporciona una manera simple y efectiva de recortar textos en PHP, considerando aspectos importantes como el manejo de caracteres multi-byte y la integridad de las palabras.


Leido 6395 veces | 0 usuarios

Código fuente no disponible.

Compartir link del tutorial con tus amigos


MVC PHP y MySql Página Web

USD 10.00

Descarga del código fuente

MVC PHP y MySql Página Web

Más tutoriales de PHP

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2025