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.
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