Absätze im Text mit <p></p> einfassen

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

  • Absätze im Text mit <p></p> einfassen

    Ich stehe total auf dem schlauch, ich möchte in einem String/Text Absätze in <p></p> einfassen.

    zb.

    HTML-Code:
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
    incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.<br /><br />
    Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    in

    HTML-Code:
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
    incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p>
    
    <p>Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
    Kann mir jemand das preg_replace oder anderen Lösungsansatz dazu Bitte geben. Bekomm es nicht hin.

  • #2
    String mit split aufteilen und dann für jedes Element ein <p> an den Anfang und ein </p> ans Ende.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Jut habe ich:

      HTML-Code:
      $str = absatz(split("[\n\n]", $str));
      
      function absatz($string) {	
       foreach($string as $val) {
        trim($val);
        if(!empty($val)) {
         echo "<p>".$val."</p>\n\n";
        }
       }
      }
      Habe nur das Problem das er mir immer wieder ein leeres <p></p> reinhaut und kann es mit nur nicht erklären. Was mach ich falsch?

      Kommentar


      • #4
        PHP-Code:
        $str absatz(split("[\n\n]"$str));
        ...
        foreach(
        $string as $val
        Du solltest dich schon entscheiden. $str oder $string.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Zitat von Kropff Beitrag anzeigen
          PHP-Code:
          $str absatz(split("[\n\n]"$str));
          ...
          foreach(
          $string as $val
          Du solltest dich schon entscheiden. $str oder $string.

          Peter
          Ist nicht wirklich das Problem, kommt nur weil ich das split in einer anderen Funktion habe.

          Kommentar


          • #6
            Ich habs, mal am Regulären Ausdruck gearbeitet (wie ich den Mist hasse)

            $str = absatz(split("\r\n|\n|\r", $str));

            Kommentar


            • #7
              Hallo,

              die Funktion trim arbeitet nicht so wie du denkst. Die ändert den String nicht, sondern gibt einen neuen zurück.

              Probier's mal so:

              PHP-Code:
              $str absatz(split("[\n\n]"$str));

              function 
              absatz($string) {    
               foreach(
              $string as $val) {
                if(!
              trim($val)) {
                 echo 
              "<p>".$val."</p>\n\n";
                }
               }

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Zitat von Frashier Beitrag anzeigen
                Jut habe ich:

                HTML-Code:
                ...
                trim($val);
                  if(!empty($val)) {
                   echo "<p>".$val."</p>\n\n";
                  }
                ...
                Habe nur das Problem das er mir immer wieder ein leeres <p></p> reinhaut und kann es mit nur nicht erklären. Was mach ich falsch?
                Eine Zeichenkette prüft man mit !isset($string[0]) und nicht mit empty($string) auf "Leere".

                Aber das ist nicht das eigentliche Problem.
                "Leere" Zeilen würde ich so ausschließen:

                PHP-Code:
                foreach () {
                  
                // ...
                  
                if (preg_match('/\A\s*\z/'$val)) {
                    continue;
                  }
                  
                // ...

                Und wenn man einmal dabei ist, könnte man das ganze Problem vielleicht auch simpler lösen:

                PHP-Code:
                function paragraph($string) {
                  return 
                '<p>' preg_replace('/(?:\r\n|[\r\n]){2,}/''</p><p>'$string) . '</p>';

                Für schöneren HTML-Quelltext musst du notfalls noch ein paar Zeilenumbrüche im Ersetzen-String einfügen.
                Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                Kommentar


                • #9
                  Zitat von fireweasel Beitrag anzeigen
                  Eine Zeichenkette prüft man mit !isset($string[0]) und nicht mit empty($string) auf "Leere".
                  Wer sagt das denn außer dir?

                  Gruß,

                  Amica
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Zitat von fireweasel Beitrag anzeigen
                    Eine Zeichenkette prüft man mit !isset($string[0]) und nicht mit empty($string) auf "Leere".
                    Wer sagt das denn außer dir?
                    Hab mich auch erst gewundert - aber ich vermute, damit will fireweasel umgehen, dass auch "0" von empty als leer erkannt würde.
                    Quasi eine leicht "geekigere" Variante von isset($string) && $string !== ""
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Ah ja, danke, da find ich aber !strlen($string) trotzdem noch kürzer und intuitiver. Es könnte zwar im Allgemeinen zu ner Warnung führen, aber innerhalb von foreach (wie im Fall des Fragestellers) kann das ja nicht passieren.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        PHP-Code:
                        $str preg_replace("%(<br />)([\s]*?)(<br />)%si""</p><p>"$str);
                        $str "<p>".$str."</p>"
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          Wer sagt das denn außer dir?
                          Alle die, die schlauer sind als ich (z.B. der hier). Das ist ganz sicher nicht auf meinem Mist gewachsen.

                          Zitat von AmicaNoctis Beitrag anzeigen
                          Ah ja, danke, da find ich aber !strlen($string) trotzdem noch kürzer und intuitiver.
                          Die Betonung sollte nicht auf der Verwendung von !isset($string[0]) liegen, sondern auf der NICHTverwendung von empty(), dessen Bezeichnung IMHO falsch gewählt ist. Sowas wie yields_to_false() würde besser passen ...

                          Für PHP-Verhältnisse ist !strlen($string) sicher die "intuitivste" Variante. Ich hätte lieber sowas wie $string->is_empty() oder notfalls eben is_empty($string) und als Rückgabewert TRUE für leere Strings und nichtexistierende Variablennamen. Muss man sich selber basteln.

                          Zitat von wahsaga Beitrag anzeigen
                          ...
                          Quasi eine leicht "geekigere" Variante von isset($string) && $string !== ""
                          Geekig? Ich verwende diese Schreibweise schon so lange, dass ich mich nicht mehr daran erinnern kann, warum ich mir sie angewöhnt hatte. Ich befürchte fast, es war aus Gründen der bösen, bösen Mikrooptimierung.
                          "... it's about 33% faster" sagt doch eigentlich schon alles.
                          Zuletzt geändert von fireweasel; 25.09.2009, 14:58.
                          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                          Kommentar

                          Lädt...
                          X