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 🤘