Oliver Lehmann: Zeilenumbruch

Beitrag lesen

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