"<br />" wird bei htmlentities, str_replace, preg_replace

  • Moin,


    irgentwie komme ich hier nicht hinter mein Problem.


    Ich hab eine Eingabe (textfeld) und die was reinkommt geht durch folgendes:


    Eingabe:

    HTML
    notes here ...
    ...


    PHP
    $_SESSION['user_input'][$was_so_reinkommt]   = htmlentities(trim($_POST[$was_so_reinkommt]));
    $_SESSION['user_input'][$was_so_reinkommt] = str_replace("\n", "<br>", $_SESSION['user_input'][$was_so_reinkommt]);
    $_SESSION['user_input'][$was_so_reinkommt] = preg_replace('/\s\s+/', ' ', $_SESSION['user_input'][$was_so_reinkommt]);


    Ausgabe sieht dann so aus:

    HTML
    notes here ...
    <br>...



    Problem:
    Wie bekomme ich die breaks "weg"?
    Einerseits wäre es gut, wenn die garnicht erst mit umgewandelt werden würden,
    andererseits wäre ich auch zufrieden, wenn es beim Einlesen aus der Datei wieder richtig angezeigt wird.


    Ist das irgentwie möglich?

  • Danke, das ist besser.
    Jetzt hab dann dann nur noch das Problem, dass der Text in der <textarea> beim wieder Laden so angezeigt wird:

    HTML
    notes here ...<br /> ...


    Gibt es ein "Gegenstück" von nl2br ?
    Dachte da jetzt wieder an str_replace, oder ist das Quatsch?

  • Es ist eine textarea.
    #1 Uer kannn in die textarea was eingeben
    #2 Speichern - wird in txt File gespeichert
    #3 und bei Aufruf wird es aus den txt File geladen und in de textarea angezeigt.


    Bei #3 liegt das Problem. Es werden die "<br />" angezeigt, anstatt einen Zeilenumbruch durchzuführen.

  • Hab ich ferade mal probiert. Dann hab ich aber das Problem, dass ich keine Umbrüche gespeichert hab.


    Wie gesagt - die Eingabe über POST wird im txt file gespeichert. Ich nutze dazu serialize(), da alle Eingaben insges. ein Array sind.
    Ohne nl2br() schreibt es ja nur "Vor dem Umbruch abc Nach dem Umbruch abc" in die Datei


    Mit nl2br() hab ich ja wenigstens die <br /> mit drin. Ist es nun sinnvoll diese <br /> mit

    PHP
    str_replace("<br />", "\r\n", §Eingabe)

    umzuwandeln?

  • Mist!
    Funktioniert nicht =/


    Wenn ich mit str_replace die <br /> ´s beim Ausgeben umwandeln will, tut sich garnix. Auch nicht bei <br, was mir irgentwie sagt, dass es an den < > liegen muss.
    Die Funktion/Zeile hab ich getestet - mit

    PHP
    $notes = str_replace('br', "\r\n", $user['notes'])


    wird ein Umbruch überall da, wo ein "br" ist eingefügt.


    Warum will es denn das <br /> nicht wandeln?

  • Also bei mir klappt es wunderbar:



    Versuche es im Zweifelsfall einfach mit einem regulären Ausdruck:


  • Ok, also irgentwas war falsch.
    Was Du mir gezeigt hast, hat funktioniert. Allerdings wurden die <br /> ´s in " " umgewandelt.
    Heisst - die Leerzeichen blieben stehen. Somit sah der Text dann so aus:


    Code
    zeile 1 ...
     zeile 2 ...
     zeile 3 ...



    Also hab ich die Art beim Speichern wieder geändert auf "<br>":

    PHP
    $text = str_replace("\r\n", "<br>", $text); // Umbrüche
    $text = preg_replace('/\s\s+/', ' ', $text); // sinnlose Leerzeichen entf.



    Beim Lesen nutze ich nun wieder:

    PHP
    $text = str_replace("<br>", "\r\n", $text);


    Und es funktioniert =)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!