Hace poco, he tenido que utilizar esta función para poder dividir en 2 columnas una determinada cadena de texto. Con la siguiente función php podemos también pasarle como parámetro el número de columnas que queremos.
Para representar las columnas utilizaremos css y una lista ul que será la que generemos de la cadena original.
$cadena ='Sin León no hubiera España, que antes que Castilla leyes, Concilios, fueros y reyes, dieron prestigio a León. La fama cantó su hazaña con clarines de victoria: ¡León escribió la historia de Covadonga a Colón! Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español ¡Viva León! Tierra hidalga, tierra mía: estrofas del romancero, desde Guzmán a don Suero, va tremolando el honor. Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español. De piedra una plegaria la catedral semeja, sobria y gentil refleja el alma de León. De historia milenaria, de santidad osario, del arte relicario y de la fe expresión. Tierra hidalga, tierra mía: estrofas del romancero, desde Guzmán a don Suero, va tremolando el honor. Con su sangre a torrentes vertida dio a la Patria preciado blasón y en sus labios cobró vida el hermoso lenguaje español. Gloria a ti, pueblo sin par; a mi labio el corazón se asoma para gritar: ¡Viva León! ¡Viva León!'; function cadena_columnas ($cadena, $columnas) { $salida = '<ul class="columnas">'; $cuerpotexto = array("$cadena"); // generamos una matriz de la cadena $texto = implode(",", $cuerpotexto); // obtenemos cadena que contiene una representación de todos los elementos de la matriz en el mismo orden $longitud = strlen($texto); // determinamos la longitud de la cadena $longitud = ceil($longitud/$columnas); // redondeamos la longitud hacia arriba devolviendo el entero más cercano dividiendola entre el nº de columnas $palabras = explode(" ", $texto); // buscamos las palabras sueltas separadas por espacios $c = count($palabras); // contamos el número de palabras $l = 0; for($i=1;$i<=$columnas;$i++) { $nuevacadena = ""; $salida .= '<li>'; for($g=$l;$g<=$c;$g++) { if(strlen($nuevacadena) <= $longitud || $i == $columnas) $nuevacadena.=$palabras[$g]." "; else { $l = $g; break; } } $salida .= $nuevacadena; $salida .= '</li>'; } $salida .= '</ul>'; return $salida; } // Modo de empleo: (por ejemplo para dividir el texto en 3 li o columnas) echo cadena_columnas($cadena,3);
Por último ya solo falta darle un estilo en nuestro archivo css de estilos:
.columnas{ list-style:none; font-family:Arial, Helvetica, sans-serif; font-size:12px; color:333; } .columnas li{ float:left; width:25%; margin:0 0 20px 20px; padding:15px; border:1px solid #ccc; }
Agradezco tu comentario 🤘