Koray: For-Schleife

Hi,
da ich noch ein Anfänger in PHP bin und mit der Referenz nicht mehr weiter komme frage ich nun euch.

Per Script möchte ich eine Variable anhand ihrer Leerzeichen in Wörter aufteilen. Sobald eine Zeile mit Wörter mehr als 20 Buchstaben besitzt, wird ein Umbruch erzeugt (<br />).

Mein bisheriges Script liefert mir folgendes Ergebnis:

Dies ist ein langer Text
und er wird noch länger
das glaubt mir keiner
oder glaubst du mir das?
das?

Wie ihr seht stimmt daran etwas nicht (letztes Wort wird wiederholt), liegt wohl noch an meiner Unerfahrenheit in PHP. Vielleicht könnt ihr mir helfen dies zu verbessern? Danke

Koray

[CODE]
<?

$text = "Dies ist ein langer Text und er wird noch länger das glaubt mir keiner oder glaubst du mir das?";
/// Wörter zählen
$teile=explode(" ", $text);
$count=0;
for($i=0; $i<count($teile); $i++)
 {
  $count=0;
  for($i=0; $i<count($teile); $i++)
   {
   $anzahlbuchstaben=$anzahlbuchstaben+strlen($teile[$i]);
  /// Leerzeichen
   if($anzahlbuchstaben<=20)
    {
     echo $teile[$i].' ';
     $hans=0;
    }
  /// Bei mehr als 20 Buchstaben Umbruch
   if($anzahlbuchstaben>=20 and $hans!=1)
    {
     echo '<br>';
     $hans++;
     if($mehr!=0) { $i--; }
     $anzahlbuchstaben=0;
     $mehr++;
    }
   $count++;
   }
 }
?>
[/CODE]

  1. hallo,
    hab mir deinen code jetzt nich genau angeguckt aber schon mal im PHP handbuch under php.net nach der funktion wordwrap. Das sollte dir helfen...

    MFG Hagen

  2. Moin Koray,

    $count=0;
    for($i=0; $i<count($teile); $i++)

    Diese Schleife ist überflüssig.

    {
      $count=0;
      for($i=0; $i<count($teile); $i++)

    [...]

    if($mehr!=0) { $i--; }
         $anzahlbuchstaben=0;
         $mehr++;
        }
       $count++;
       }
    }
    ?>
    [/CODE]

    Zunächst ist die erste, äußere for-schleife überflüßig bzw. doppelt.
    Wenn Du eine weitere Bedingung abfrägst, dann funktioniert es.
    ( Habe ich jetzt nur auf die Husche gemacht, das geht auch eleganter )

    Die Zeile hier:
    if($mehr!=0)

    so ergänzen:
    if($mehr!=0 && $count <= $i)

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
  3. Hi,

    Per Script möchte ich eine Variable anhand ihrer Leerzeichen in Wörter aufteilen. Sobald eine Zeile mit Wörter mehr als 20 Buchstaben besitzt, wird ein Umbruch erzeugt (<br />).

    Darf ich fragen wozu?
    Du hast offensichtlich Fließtext, den Du in einer gut lesbaren Breite präsentieren willst. Dazu sind manuelle Zeilenumbrüche denkbar ungeeignet. Eine Breitenangabe des Textabsatzs über CSS in em wäre die beste Lösung.

    freundliche Grüße
    Ingo