Michael W.: Zeilenumbruch

Hallo,

Ich hab mir ein eigenes Forum Programmiert (besser: ich bin noch dabei).
aber ich habe ein problem:

schaut euch einfach mei Posting an...
http://mitglied.lycos.de/djwoelk3/forum/index.php

MfG
Michael W.

  1. aaaalso ich weiß ja nich genau, wie du das abspeicherst, wirst ja aber sicherlich ne db haben

    und die nachricht wird ja sicherlich dann kurzzeitig in einer variablen stehen

    und da das ganze unter php läuft machst einfach

    $meldung = nl2br($meldung);

    und dann dürft das eigentlich gehen ......

    viel glück

    gruß

  2. Du musst wenn du ein Forum in PHP programmierst die <br>'s in Anführungsstriche setzen. SO: "<br>"......
    Alle HTML Tags müssen bei Foren in PHP die gerade eine Nachricht ausgeben in "" stehen.

    Wenn du es so hast wie ich es dir gesagt hab und es immer noch nicht funkt dann schick mir mal den kompletten Quelltext an meine E-Mail

    1. Hallo

      Du musst wenn du ein Forum in PHP programmierst die <br>'s in Anführungsstriche setzen. SO: "<br>"......
      Alle HTML Tags müssen bei Foren in PHP die gerade eine Nachricht ausgeben in "" stehen.

      Blödsinn!

      echo "<p>$array[0]<br>$array[1]</p>";

      oder

      echo "<p>".$array[0]."<br>".$array[1]."</p>";

      Könnte natürlich auch Variable $foo und $bar oder sonstwas sein.
      Ist halt eine Frage der Übersichtlichkeit. Ob da bei der einen
      oder Anderen Version um einige Millisekunden schneller geparst
      wird, weiß ich leider nicht.

      Tschö, Auge

  3. Hallo Michael,

    das Thema hatten wir schon mal vor laaange Zeit. Damals habe ich Die sogar extra ein paar Beispiele gebaut. Die hast Du aber scheinbar nicht berücksichtigt.

    Wenn Du Daten über ein Zeilen-Textfeld oder eine Textbox (Textarea) gemeinsam in einem Ascii-Datensatz abspeichern willst, musst Du Dir erstmal Gedanken über das Speicherformat machen. Du brauchst (mindestens) zwei Sonderzeichen, die NICHT in den Daten enthalten sein dürfen:

    1. Feldtrenner: hierfür empfehle ich chr(4)
    2. Zeilenendezeichen: hierfür ist festgelegt CRLF für WIN-DOS, bzw. bei LF Speicherung auf UNIX oder CR für MAC-Systeme.

    define ("CRLF",chr(13).chr(10));  // und für die anderen auch

    define ("SEP",chr(4));     // Feldtrenner nicht vergessen
    define ("ZU",chr(127));    // für den Zeilenumbruch

    3. Wenn ein abzuspeichernder Text selber Zeilenumbrüche enthalten soll, dann muss man die ebenfalls mit einem Sonderzeichen geltend machen. Hierfür empfehle ich chr(127).

    Alle drei Sonderzeichen stehen für diese Zwecke zur Verfügung und werden für nichts anderes benötigt. Außerdem liegen sie alle im Bereich 0-127, was für die Datenübertragung per HTTP sinnvoll sein kann.

    Wenn ein Text aus einer Textbox beim PHP-Script ankommt, kann er
    1. Zeilenumbrüche (CRLF) enthalten
    2. HTML-Code enthalten
    3. evtl. den Feldtrenner enthalten (das ist unwahrscheinlich aber nicht unmöglich)

    Du musst also
    1. Die "echten" Zeilenumbrüche in eigene (des Speicherformates) umwandeln
    hierzu benutzt Du:

    $textfeld=str_replace(CRLF,chr(127),$textfeld);
    $textfeld=str_replace(CR,chr(127),$textfeld);
    $textfeld=str_replace(LF,chr(127),$textfeld);

    Bitte alle drei Ersetzungen in dieser Reihenfolge durchführen.

    2. Nach unerlaubten Feldtrenner-Zeichen suchen und diese entfernen:
    $textfeld=str_replace(SEP,"",$textfeld);

    Dann kannst Du die Daten bereits zu einem Datensatz zusammenstellen:

    $datensatz=$feld1.SEP.$feld2.SEP.$textfeld.SEP.$letztesFeld.LF;

    Anschließend kannst Du den Datensatz mit

    ...
    fwrite($fh,$datensatz,strlen($datensatz));
    ...

    In die Datei schreiben.

    Das wiederauslesen der Daten geht dann ganz einfach mit:

    $datei=file("dateiname");

    In jeder Zelle des indizierten Arrays steht jetzt ein Datensatz.

    $datensatz=explode(SEP,substr($datei,0,-1));

    Nun ist $datensatz ein Array, in dem die einzelnen Felder wieder zugänglich sind. Mit der substr()-Funktion wurde der LF von der Zeile (bzw. dem letzten Feld) abgeschnitten.

    Nun beginnt das Spiel rückwärst. Jenachdem, wie Du ausgeben willst, musst Du die Zeichenketten (Feldinhalte) aufbereiten.

    Zu Ausgabe in reinem HTML-Text (also nicht in Formularfeldern) reicht:

    1. Tauschen des ZU in "<br />" mit Hilfe der str_replace()-Funktion.
    2. Entfernen der HTML-Tags mit strip_tags()
    3. oder Umwandeln der HTML-Tags mit htmlspecialchars();
    4. Escapesequenzen entfernen mit strip_slashes()
       damit nicht nachher überall "sozusagen" steht.

    Nun müsstest Du aber zurecht kommen.

    Grüße

    Tom

    1. Hallo,

      Daran kann ich mich aber kein meter erinnern...

      mit $meldung = nl2br($meldung); gehts auch!
      an der stelle danke an das 'Sorgenkind mech'!!

      MfG
      Michael W.

  4. Hallo,

    Ich hab mir ein eigenes Forum Programmiert (besser: ich bin noch dabei).
    aber ich habe ein problem:

    Das hatten 10Tausende auch schon.
    Schau mal in die 'de.comp.lang.php FAQ'

    6.5. Wie kann ich Zeilenumbrüche verarbeiten?
    String | Zeilenumbruch | Zeile | Enter
    http://www.dclp-faq.de/q/q-string-zeilenumbruch.html

    6.6. Wie kann ich Zeilenumbrüche in <br> umwandeln?
    Zeilenumbruch | Zeile | HTML
    http://www.dclp-faq.de/q/q-string-html-umbruch.html

    6.7. Wie breche ich einen String nach x Zeichen um?
    Zeilenumbruch | Zeilenlaenge
    http://www.dclp-faq.de/q/q-string-umbruch.html

    Gruß
      Der Linker