Ralf: "<" und if-abfragen

Hallo.

Ich hoffe, dass ich keine bereits bestehenden Antworten auf diese Frage übersehen habe...

Mein Problem sieht folgendermaßen aus:

Ein bestehender Text aus einer txt-Datei wird im Browser quasi gelayoutet. Das heißt Zeilenumbrüche in der txt werden umgewandelt in <div id='absatz'>, etc...
Das Layouten klappt, sieht alles wunderbar aus. Da mein Layout zweispaltig ist, muss ich den Text unterteilen. Damit nicht nach soundsoviel Zeichen einfach getrennt und damit riskiert wird, dass ein Wort einfach abgehackt wird und es in der zweiten Spalte weiterläuft, habe ich folgende Schleife benutzt:

  
$i = 1400;  
while ($layouttext[$i] != " ")  
 {$i=$i+1;  
         };  

Dann weiß ich bis zu welcher Stelle in $layouttext ich Teil1 des Textes laufen lassen muss, sodass kein Wort abgekappt wird.
Das  Problem ist, dass jetzt u.U. nach .z.b "<img " getrennt wird und der Rest das Tags in die neue Spalte (die ein div ist) gesetzt wird.. Damit funktioniert aber der tag nicht mehr... Meine Idee

  
while ( ($layouttext[$i] != " ") || ($bilanz!=0) )  
 {  
 if ( $layouttext[$i] == "<" ) {$bilanz=$bilanz+1;};  
 if ( $layouttext[$i] == ">" ) {$bilanz=$bilanz-1;};  
 $i=$i+1;  
 };  

funktioniert leider nicht.. Anscheinend ist $layouttext[$i] niemals "<"/">". Ich habe ihn aber mal als txt gespeichert und angeschaut- es gibt sie. Setze ich bspweise "e" statt "<" ein, gehts.. aber ich will ja die offenen/geschlossenen Tags und nicht e's zählen^^

Danke schonmal ;-)
Grüße, Ralf

  1. Das  Problem ist, dass jetzt u.U. nach .z.b "<img " getrennt wird und der Rest das Tags in die neue Spalte (die ein div ist) gesetzt wird.. Damit funktioniert aber der tag nicht mehr... Meine Idee

    while ( ($layouttext[$i] != " ") || ($bilanz!=0) )
    {
    if ( $layouttext[$i] == "<" ) {$bilanz=$bilanz+1;};
    if ( $layouttext[$i] == ">" ) {$bilanz=$bilanz-1;};
    $i=$i+1;
    };

    
    > funktioniert leider nicht.. Anscheinend ist $layouttext[$i] niemals "<"/">". Ich habe ihn aber mal als txt gespeichert und angeschaut- es gibt sie. Setze ich bspweise "e" statt "<" ein, gehts.. aber ich will ja die offenen/geschlossenen Tags und nicht e's zählen^^  
      
    Nabend...  
    Also ich seh keinen Denkfehler in deinem Quelltext. Ausserdem hab ich ihn 1:1 übernommen und getestet, bei mir geht er auch.  
    Folglich bleibt für mich nur eine Annahme, in dem Text steht nicht das was du zu denken glaubst. Wobei das ja schnell überprüft wäre?  
      
    Gruß,  
    Andreas
    
    1. Argh...
      es war doch ein Denkfehler drin, zwar nicht in dem kleinen Quellcodeausschnitt sondern darin, dass ich die "tag-Bilanzierung" erst ab dort vorgenommen hab, wo ich nach Leerzeichen zwischen Wörtern gesucht habt. Wenn also ein "<" davor war, konnte die Bilanzierung nie stimmen^^

      Danke aber für die Bestätigung, sonst hätt ich womöglich was ganz anderes ausprobiert!
      Grüße

  2. Hallo!

    Was wird dir denn fuer $layouttext[$i] ausgegeben, wenn es auf ein < oder > laeuft? Lass dir auch mal dan Charcode dafuer ausgeben und frag eventuell danach ab.

  3. Hello,

    if ( $layouttext[$i] == "<" ) {$bilanz=$bilanz+1;};
    if ( $layouttext[$i] == ">" ) {$bilanz=$bilanz-1;};

    hast du bedacht, dass in deinem Text unter Umständen zweiteilige Elemente (<a>...</a>) vorkommen, oder gar <table><tr><td></td></tr></table>? Sofern das nicht ausgeschlossen werden kann wird deine Layoutregelung um einiges komplizierter.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    I will never understand why Germans feel the need to kill trees  --  Arbeitskollege aus UK zum Thema ob eine Dokumentation elektronisch oder auf Papier ausgeliefert wird
    1. Hello,

      if ( $layouttext[$i] == "<" ) {$bilanz=$bilanz+1;};
      if ( $layouttext[$i] == ">" ) {$bilanz=$bilanz-1;};
      hast du bedacht, dass in deinem Text unter Umständen zweiteilige Elemente (<a>...</a>) vorkommen, oder gar <table><tr><td></td></tr></table>? Sofern das nicht ausgeschlossen werden kann wird deine Layoutregelung um einiges komplizierter.

      MfG
      Rouven

      Das kam mir gestern Abend auch^^ aber im Text dürften nur <img> bzw <div></div> vorkommen - es sollte also gut möglich sein... Oder aber ich füge die tags erst nach dem Teilen des Texts ein...
      Grüße