Fijate que probe el codigo que te puse y las palabras no se cortan, para eso el explode, voy contando si no cabe una palabra mas, en vez de cortarla no la imprimo y ya..
Esta vez me puse a verlo en codigo a ver que tal salia supongo que lo que quieres es algo asi, copialo y pruebalo a ver..
Código PHP:
<?php
$texto = "Epsum factorial non deposit quid pro quo hic escorol.
Olypian quarrels et gorilla congolium sic ad nauseum.
Souvlaki ignitus carborundum e pluribus unum.";
$palabras = explode(" ",$texto);
$i = 0;
$cabe = "si";
$acu = 0;
$total = 38;
//38 caracteres caben si se usa la letra por defecto del navegador
//en un marco de 120x50,
?>
<div style="border: 1px solid #000000; width:120px; height:50px;">
<?
while ($palabras[$i] && $cabe == "si"){
$acu = $acu + (strlen($palabras[$i]) + 1);
if ($acu <= $total )
echo $palabras[$i]." ";
else
$cabe = "no";
$i++;
}
?>
</div>
<? ?>
Si no es asi, realmente no entiendo :P
Saludos