Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelten Zeilenumbruch ersetzen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doppelten Zeilenumbruch ersetzen

    Hallo

    Ich würde mich mal wieder über eure Hilfe freuen

    Ausgangslage: Über ein Formular wird ein Text in eine DB gespeichert und wieder ausgelesen. Dabei möchte ich bei doppelten Zeilenumbrüchen einen neuen Absatz (<p>) beginnen.

    Mein Problem: Der angewendete Code funktioniert nur bei einfachen Zeilenumschlägen, nicht bei doppelten. Ich vermute, dass da zwischen <br><br> noch etwas reingehört, denn in der Quelltext-Ansicht im Firefox sind die <br> auf unterschiedlichen Zeilen. Im Netz finde ich den Hinweis auf \n, aber das habe ich natürlich schon versucht.

    bei einfachen Zeilenumbrüchen beginnt ein neuer Absatz, dieser code funktioniert:
    PHP-Code:
    $br '<br>';
    //$article_text_br = nl2br($article_text);
    $article_text_br str_replace("\n""<br>"$article_text);
    $article_text_p str_replace($br'</p><p>'$article_text_br); 

    bei doppelten Zeilenumbrüchen beginnt ein neuer Absatz, dieser code funktioniert nicht:
    PHP-Code:
    $br '<br /><br />';
    //$article_text_br = nl2br($article_text);
    $article_text_br str_replace("\n""<br>"$article_text);
    $article_text_p str_replace($br'</p><p>'$article_text_br); 
    In diesem Fall bleiben die doppelten Zeilenumbrüche doppelte Zeilenumbrüche (<br> [Zeilenumbruch] <br>)


    PS: Wenn ich nl2br verwende, funktioniert das Ganze auch nicht mit einfachem Zeilenumbruch und wenn ich den zu ersetzenden String im zweiten str_replace nicht als Variable angebe sondern als string ('<br>'), funktioniert das ganze auch nicht. Vielleicht hilft das?


    Vielen Dank schon im Voraus


  • #2
    Wenn ein \n ein BR-Element erzeugt, dann wären zwei \n ein Absatz.

    Demnach müsste es so sein
    PHP-Code:
    $article_text_p str_replace("\n\n"'&lt;/p&gt;&lt;p&gt;'$article_text_br);  
    $article_text_br str_replace("\n""&lt;br&gt;"$article_text); 
    Damit hast du zwar was du möchtest, ist aber noch nicht korrekt, denn der Absatz ist ja leer. Kommt da denn noch wie vorgesehen Text rein oder was ist dein Ziel?

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      Damit hast du zwar was du möchtest, ist aber noch nicht korrekt, denn der Absatz ist ja leer. Kommt da denn noch wie vorgesehen Text rein oder was ist dein Ziel?
      Phu, das tut ja in den Augen weh, da verstehe ich nur Bahnhof Aber wenn ichs wenigstens richtig testen konnte (ich habe die Zeilen getauscht, da sich $article_text_p ja auf $article_text_br bezieht, welches in deinem Beispiel erst in der nächsten Zeile definiert wird), werden bei deinem Code die <br> im Browser ausgegeben...

      Was ich möchte: Ein Text ist mit Zeilenumbrüchen in einer Datenbank gespeichert. Per php wird die DB ausgelesen und die Daten werden dargestellt. Dabei wird $article_text (bzw. künftig $article_text_p) innerhalb eines <p>-Elements ausgegeben. Bisher wurden die Zeilenumbrüche mit nl2br "lesbar" gemacht, doppelte Zeilenumbrüche sahen dann aber recht doof aus. Deshalb möchte ich, dass bei doppelten Zeilenumbrüchen nicht zwei <br> im Quelltext erscheinen, sondern ein </p><p>, womit ich einen neuen Abschnitt begonnen hätte.

      Kommentar


      • #4
        Wie wärs mit einem Markdown Parser?

        Kommentar


        • #5
          Bitte keine PN, dafür ist das Forum da.

          PHP-Code:
          $text 'Die ist eine Zeile
          Dies ist die zweite Zeile

          und hier soll ein Absatz rein!'
          ;

          $newText str_replace(array("\r\n\r\n""\n\n"),"</p><p>"$text);
          $newText str_replace(array("\r\n""\n"), "<br>",  $newText);
          $newText '<p>' $newText '</p>';

          var_dump($newText); 

          Kommentar


          • #6
            Zitat von protestix Beitrag anzeigen
            Bitte keine PN, dafür ist das Forum da.

            PHP-Code:
            $text 'Die ist eine Zeile
            Dies ist die zweite Zeile

            und hier soll ein Absatz rein!'
            ;

            $newText str_replace(array("\r\n\r\n""\n\n"),"</p><p>"$text);
            $newText str_replace(array("\r\n""\n"), "<br>"$newText);
            $newText '<p>' $newText '</p>';

            var_dump($newText); 
            Herzlichen Dank! \r\n war was ich gesucht habe! Vielen Dank und sorry für die PM.

            Kommentar

            Lädt...
            X