Neue Zeile (13,10) durch Break ersetzen (Php)



  • Mein Php-Skript kriegt über ein Formular einen Text aus einer Textarea zugeschickt. Diesen will ich in einer Datei specierhn, und später wieder ausgeben. In der gespeicherten Datei soll das Ganze schon in Html-Form sein. Nun muss ich alle jede neue Zeile durch ein <BR> ersetzen. Normalerweise würde ich ja nl2br() benutzen, aber das geht hier nicht, weil die Zeilenvorschübe aus dem Formular mit den Ascii-Zeichen "10, 13" dargestellt werden, und dies entspricht nicht "\n". Nun habe ich es mit str_replace probiert, das funktioniert aber auch nicht:

    nl=chr(13).chr(10);nl = chr(13) . chr(10); inhalt = str_replace("$nl", "<BR>", inhalt);inhalt); gbdata = fopen("gbdata.txt", "w");

    Weiß jemand, warum dies nicht geht, oder hat einen Vorschlag, wie ich das anders lösen könnte?



  • Deine Erklärung stimmt so nicht! nl2br() versagt bei Dir nicht etwa, weil es nicht mit einem Windows-Zeilenumbruch klar käme, sondern weil Du die Funktion (wie die meisten) falsch verstanden hast! nl2br() packt einen HTML-Zeilenumbruch VOR jeden Zeilenumbruch, es ersetzt letzteren nicht!

    Willst Du den Zeilenumbruch gg. den Umbruch ersetzen, dann nimm folgende Variante, damit hast Du alle Betriebssysteme abgedeckt:

    var=preg_replace("=(\\\\\r\\\\\n|\\\\\r|\\\\\n)=","
    ",var);

    Gruß Jens



  • Thx, funktioniert aber leider auch nicht!! Mir würde es übrigens auch reichen, wenn nl2br() "einen HTML-Zeilenumbruch VOR jeden Zeilenumbruch" machen würde, denn dann würde die HTML-Seite ja richtig dargestellt, aber dies geht ja auch nicht, es wird einfach gar nichts ersetzt!



  • Sorry, vergesst was ich gesagt habe. Ich bin ein Idiot, nl2br() macht genau das was ich will, ich habe es bloß die ganze Zeit auf die falsche Variable angewendet 😃


Anmelden zum Antworten