Cadena de texto en varias columnas - Bufa Webmaster

Bufa Webmaster

Recursos web en español

Cadena de texto en varias columnas

7 Feb 2010

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$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:

1
2
3
4
5
6
7
8
9
10
11
12
13
.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;
}
Compartir:
  • Google Bookmarks
  • Twitter
  • StumbleUpon
  • Digg
  • LinkedIn
  • del.icio.us
  • MisterWong
COMENTARIOS
matiascano, el 24/03/2010 a las 17:40:09

Muchas gracias por la información, estoy buscando exactamente esto, por lo que me pondré a probarlo a la brevedad, luego comentaré que tal me ha resultado.

Un saludo.

Escribe un comentario

Spam Protection by WP-SpamFree

Bufa en Twiter

77 post | 40 comentarios | 110 tags | suscriptores

Acerca de

bufa.es es una página web montada sobre wordpress que tiene como finalidad compartir la mayoría de recursos web (scripts, php, css, jquery, wordpress, plugins, posicionamiento web, etc...) utilizados por mi en el desarrollo web.

Entries (RSS) | Comments (RSS)

© 2010 Bufa Webmaster | valid XHTML and CSS | Powered by Wordpress and design bufa