Cadena de texto en varias columnas
2 comentarios
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.
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:
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;
}