Cortar cadena con PHP usando funciones

Cortar cadena con PHP usando funciones. Uno de los problemas más comunes al crear páginas web dinámicas o proyectos PHP (donde el contenido se obtiene de una base de datos, un sistema de administración de contenido) es que el texto de entrada puede ser demasiado largo y hacer que el diseño de la página se ‘rompa‘ y pierda la estética del CSS.

Una solución es truncar o cortar el texto para que la página se vea en buena interfaz. Esto suena muy fácil de hacer, pero a menudo los resultados no son los esperados debido a que las palabras y cadenas se cortan en puntos inapropiados.

Cortar cadena con PHP usando funciones
Cortar cadena con PHP usando funciones

En este artículo daremos solución a estos inconvenientes usando 3 funciones escritos con PHP

Cortar cadena con PHP: Limitar o truncar

Se pueden limitar los caracteres a mostrar de una cadena (o string) mediante la función substr:

$cadena = 'abdefghijkl'; //Esta es la cadena que se quiere acortar
echo substr($cadena, 0, 5); //con esto se cogen los 5 primeros caracteres
//Habría devuelto: abcde

¿Cómo funciona el script?

Vamos a explicar cómo podemos truncar una cadena de texto, si la variable posee una longitud mayor a la declarada, se procederá con el corte.

Además de recortar la cadena con PHP vamos a ver cómo agregarle puntos tres puntos: ... (o cualquier otro sufijo al final del corte)

A) Primera forma: Limitar cadena en PHP usando strlen y substr

Este enfoque aplica con PHP y con cualquier otro lenguaje que permita cortar una cadena y conocer la longitud de la misma. Se trata de comparar la longitud, y si es mayor que el límite entonces se corta de manera automática.

La función usada en la primera forma:

function limitar_cadena($cadena, $limite, $sufijo){
// Si la longitud es mayor que el límite...
if(strlen($cadena) > $limite){
// Entonces corta la cadena y ponle el sufijo
return substr($cadena, 0, $limite) . $sufijo;
}

// Si no, entonces devuelve la cadena normal
return $cadena;
}

Uso de la funcion

# Limitar a 7 caracteres y si es más larga la funcion se ejecutara y ademas agregara puntos suspensivos
echo limitar_cadena("Hola mundo soy una cadena muy extensa en tu pagina web", 7, "...");

Lo que acabamos de hacer funciona, aunque le faltan validaciones. Veamos otras funciones.

B) SEGUNDA FORMA: Función substr_cadena

Este ejemplo resalta el principal problema con esta función, ya que no tendrá en cuenta las palabras en una cadena. La solución es crear una nueva función que evite separar palabras al cortar una cadena por varios caracteres.

function substr_cadena($text, $maxchar, $end='...') {
if (strlen($text) > $maxchar || $text == '') {
$words = preg_split('/\s/', $text);
$output = '';
$i = 0;
while (1) {
$length = strlen($output)+strlen($words[$i]);
if ($length > $maxchar) {
break;
}
else {
$output .= " " . $words[$i];
++$i;
}
}
$output .= $end;
}
else {
$output = $text;
}
return $output;
}

Esta función divide la cadena en palabras y luego las une nuevamente una por una. Lo bueno es que, si hay una palabra que haría que la cadena sea más larga que el número requerido de caracteres, no incluye la palabra. La función se puede llamar así.

$string = 'Esta cuerda es demasiado larga y se acortará.';
echo substr_cadena($string,30);

C) TERCERA FORMA: Función truncar_cadena

Aquí hay una función simple que evita los inconvenientes habituales y ofrece cierta flexibilidad en el formato, la función tiene como nombre truncar_cadena y podemos usando en las cadenas que deseamos limitar o recortar.

function truncar_cadena($string, $limit, $break=".", $pad="...")
{
// regresa sin cambios si la cadena es más corta que $ limit
if(strlen($string) <= $limit) return $string;

// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit))) {
if($breakpoint < strlen($string) - 1) {
$string = substr($string, 0, $breakpoint) . $pad;
}
}

return $string;
}

Uso de la función dada

$cadena= "La red mundial. Cuando tu persona promedio en la calle se refiere a Internet, generalmente piensan en la World Wide Web. La web es básicamente un serie de documentos compartidos con el mundo escritos en un lenguaje de codificación llamado Hyper Text.
Lenguaje de marcado o HTML. Cuando veas una página web, como esta, descargaste un documento desde otra computadora que se ha configurado como un servidor web.";

$cadena_cortada= truncar_cadena($cadena, 100);
echo "<p>$shortdesc</p>";

Truncamiento en saltos de palabras

Si su texto consiste en párrafos largos (Generalmente artículos en un blog) o necesita un control preciso sobre la longitud, entonces sería mejor romper un espacio y asignarle puntos suspensivos.

Conclusión

Como han podido apreciar el código es fácil de implementar y podemos aplicarlo a nuestros proyectos web u otras necesidades.

Hemos visto 3 formas de cortar cadenas usando el lenguaje PHP. Además, le hemos agregado puntos suspensivos para darle un corte profesional.

Para dinamizar el proceso hemos aprendido a usar funciones PHP

Deja un comentario

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

Scroll al inicio