Here's my proposition:
<?php
$sample = "This is sample text to be divided. This is sample text to be divided. This is sample text to be divided.
This is sample text to be divided. This is sample text to be divided. This is sample text to be divided.
This is sample text to be divided. This is sample text to be divided. This is sample text to be divided. ";
$result = DivideText($sample,3,20);
echo "<table style=\"width:100%;\"><tr>";
foreach ($result as $col) echo "<td style=\"border: solid black 1px; padding: 5px;\">$col</td>";
echo "</tr></table>";
//FUNCTION DEFINITIONS
function DivideText($sample,$parts,$first)
{
$all = strlen($sample);
$col_len = round(($all-$first)/($parts-1));
$tmp_str = $sample;
$result = array();
for ($i = 1; $i < $parts;$i++)
{
$s=CutOff($tmp_str,($i==1)?$first:$col_len);
$l = strlen($s);
$result[] = $s;
$tmp_str = substr($tmp_str,$l,strlen($tmp_str));
}
$result[] = $tmp_str;
return $result;
}
function CutOff($string,$length)
{
$str1 = substr($string,0,$length);
// first space
$last=strrchr($str1," ");
// how many characters to cut from the end of str1
$len=strlen($last);
$len_ok=strlen($str1) - $len;
$str1=substr($string,0,$len_ok);
return $str1;
}
?>
It's based on character, rather then word count.