Hi Marcus,
ich habe mal nen altes Programm von mir rausgekramt, und dort fiolgendes gefunden.
//folgende Fkt. bricht den Text nach 72 zeichen immer vor dem letzten Wort um
function formattext ($text) {
//alle woerter kommen einzeln in ein array
$woerter = explode(" ",$text);
$i=0;
$z=0;
while($i<count($woerter)) {
//solange eine worthinzufuegung nicht > 72 ergibt UND noch woerter da sind ODER das wort > 72 zeichen ist
while(((strlen($zeile[$z])+strlen($woerter[$i]))<=71) && $i<count($woerter) strlen($woerter[$i])>71) {
$woerter2 = explode(Chr(13).Chr(10),$woerter[$i]);
//wenn $woerter aus mehreren Vars besteht, dann zerlege diesen Array in Variablen
if(count($woerter2)>1) {
//mache mnach jedem wort wieder eine leerzeile
for($a=0;$a<count($woerter2);$a++) {
$zeile[$z].=$woerter2[$a]." " ;
$text2.=$zeile[$z]."\n";
$z++;
}
$i++;
// damit danach kein absatz ist, loesche den letzten zeilenumruch wieder
$text2 = chop($text2);
$text2.= " ";
}
//wenn das wort>72 zeichen lang ist, dann fange eine neue zeile an, es sei denn
//es ist das 1. Wort
if(strlen($woerter[$i])>71 && $i>"0") $z++;
if(count($woerter2) == 1) {
$zeile[$z].=$woerter[$i]." " ;
$i++;
}
}
// echo "---$z=".$z."---$i=".$i."----".$text2."<br><br>";
$text2.=$zeile[$z]."\n";
$z++;
}
// $text2=str_replace("\n","\n",$text2);
return $text2;
}
Duerfte eigentlich genau das sein was du willst. Viel spass ;-) Kann sein das man da so einiges noch besser loesen koennte. doch dazu habe ich jetzt keine lust ;-)
MfG Olli