Erri: nl2br() gibt <br /> aus --> Validator bringt Fehler

Hallo,

ich benutze die Funktion nl2br() um Zeilenumbrüche, welche von Formulareingabedaten stammen, beizubehalten.

Die Funktion ersetzt diese Ümbrüche mit <br />.
Wenn ich meine Website nun validiere erhalte ich Fehler (NET-ermöglichender Starttag).

Kann ich das " /" aus dem <br /> irgendwie entfernen?

Vielen Dank und Viele Grüße
Erri

  1. Hallo,

    Kann ich das " /" aus dem <br /> irgendwie entfernen?

    Warum willst du es entfernen? Diese schreibweise zeichnet <br> nur als inhaltsleer aus und arbeitet somit XHTML-konform. Siehe dazu auch hier: http://de.selfhtml.org/html/text/zeilenumbruch.htm#erzwingen

    Jedenfalls wird dein Code dadurch nicht invalide.

    Viele Grüße
    Patrick

    --
    "Though this be madness, yet there's method in't."
    sh:( fo:| ch:? rl:( br:^ n4:( ie:{ mo:) va:} de:> zu:) fl:| js:( ss:| ls:[
    1. Hallo ShiNtoKu,

      Kann ich das " /" aus dem <br /> irgendwie entfernen?

      Warum willst du es entfernen? Diese schreibweise zeichnet <br> nur
      als inhaltsleer aus und arbeitet somit XHTML-konform.

      SGML sieht das etwas anders, da ist <br /> aequivalent mit <br>&gt;

      Jedenfalls wird dein Code dadurch nicht invalide.

      Abhaengig davon, _wo_ das <br> steht, kann das durchaus passieren.

      Grüße,
       CK

      --
      Sobald dir ein Gedanke kommt, lache über ihn.
      http://wwwtech.de/
  2. Hi!

    ich benutze die Funktion nl2br() um Zeilenumbrüche, welche von Formulareingabedaten stammen, beizubehalten.

    Die Funktion ersetzt diese Ümbrüche mit <br />.
    Wenn ich meine Website nun validiere erhalte ich Fehler (NET-ermöglichender Starttag).

    Kann ich das " /" aus dem <br /> irgendwie entfernen?

    Das ist ein Problem, wie es hier im Forum schon einmal besprochen wurde. Die Funktion nl2br() ersetzt alle \n durch den XHTML-korrekten Tag <br />, ohne jedoch eine Möglichkeit zu bieten, eventuell einen zweiten Parameter zu übergeben, der der Funktion mitteilt anstatt <br /> <br> zu verwenden. Christian Kruse hat - so weit ich weiß - den PHP-Developpern eine entsprechend korrigierte Version geschickt.

    Ansonsten müsstest du eben str_replace() verwenden:

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

    Grüße,
    Fabian St.

    --
    Endlich online: http://fabis-site.net
    --> XHTML, CSS, PHP-Formmailer, Linux
    Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
    1. Hi Fabian,

      danke für die schnelle Antwort.

      Gruß
      Erri

    2. Hello,

      Ansonsten müsstest du eben str_replace() verwenden:

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

      Bitte nicht ersetzen, sondern ergänzen:

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

      Andernfalls fängt man sich ieder andere Probleme ein.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. hi,

        Bitte nicht ersetzen, sondern ergänzen:

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

        Andernfalls fängt man sich wieder andere Probleme ein.

        die da wären?

        es macht m.W. in keinem browser probleme, ob nach <br> nun ein zeilenumbruch erfolgt oder nicht.
        weißt du näheres?

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hello,

          Bitte nicht ersetzen, sondern ergänzen:

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

          Andernfalls fängt man sich wieder andere Probleme ein.

          die da wären?

          es macht m.W. in keinem browser probleme, ob nach <br> nun ein zeilenumbruch erfolgt oder nicht.
          weißt du näheres?

          Wir haben das neulich erst ausführlich diskutiert, dass HTTP-Überstragungsstrecken sich leider manchmal an die Besonderheiten von POP3/SMTP halten, und nur 998 Zeichen zuzüglich maximal zwei Zeichen Zeilenumbruch pro Zeile akzeptieren. Die Browser können heute fast alle mindestens Word/halbe, also irgendwas um 65536/2 Zeichen. Einige sogar viel mehr.

          Es gibt immer wieder Probleme deshalb.

          Spätestens, wenn man versucht, eine solche HTML-Seite als eMail weiterzusenden, und  da ist kein Punkt und Komma drin, dann kann es Probleme geben.

          Wir haben einfach zuviele unterscheidliche Übertragungsmechanismen gleichzeitig im Internet, als dass man immer beahupten könnte, dass die regeln für den einen bei Übertragung  über den anderen keine Probleme machen.

          Wenn ich nochmalö gaaaanz viel Zeit habe, dann bereite ich die (wenigen) gesammelten Problemfälle nochmals für eine fundierte Diskussion auf.

          Du solltest aber nicht so togoros behaupten, dass es keine Probleme gibt. Ein ganz prophanes ist z. B. die Lesbarkeit des Quellcodes für den Empfänger. Aber hat der denn kein Recht, mal einen Zeilenumbruch zu bekommen?

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Moin,

            Wir haben das neulich erst ausführlich diskutiert, dass HTTP-Überstragungsstrecken sich leider manchmal an die Besonderheiten von POP3/SMTP halten, und nur 998 Zeichen zuzüglich maximal zwei Zeichen Zeilenumbruch pro Zeile akzeptieren.

            Nein.

            --
            Henryk Plötz
            Grüße aus Berlin
            ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
            ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
            1. Hello,

              Wir haben das neulich erst ausführlich diskutiert, dass HTTP-Überstragungsstrecken sich leider manchmal an die Besonderheiten von POP3/SMTP halten, und nur 998 Zeichen zuzüglich maximal zwei Zeichen Zeilenumbruch pro Zeile akzeptieren.

              Nein.

              Hast Du schon genug Bits intus heute?

              Anders kann ich mir diese kurze Antwort nicht erklären.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Moin,

                Anders kann ich mir diese kurze Antwort nicht erklären.

                RFC 2616, Abschnitt 7.2.  Lang genug?

                --
                Henryk Plötz
                Grüße aus Berlin
                ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
                ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
                1. Hello,

                  Anders kann ich mir diese kurze Antwort nicht erklären.

                  RFC 2616, Abschnitt 7.2.  Lang genug?

                  Dann hast Du nicht genau genug gelesen, was ich schrieb.
                  Dass die Theori das genaununtescheidet, und es da keine Begrenzug geben dürfte, dass haben wir hier adikutiert. Wir haben hier aber gemeinsam festgestellt, dass es international leider Abweichungen davon gibt.

                  Man sollte sich aus (inoffiziellen) Kompatibilitätskrierien heraus also dazu durchringen, möglichst im Bereich bis 998 Zeichen einen Zeilenumbruch zu setzen.

                  Das bloße Herumreiten auf eienr RFC, die nachweislich nicht jeder einhält, halte ich für ignorant und arrogant, wenn auch (zugegeben) für technisch exact.

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Moin,

                    Dann hast Du nicht genau genug gelesen, was ich schrieb.

                    Ich habe es gelesen. Und ich habe dir widersprochen und meinen Widerspruch bewiesen. In HTTP gibt es keinerlei Begrenzung für den Body, er ist einfach eine Sammlung von 0 oder mehr Octets. Insbesondere gibt es keine Beschränkung hinsichtlich der Zeilenlänge. Es gibt nicht einmal das Konzept einer Zeile.

                    Über was auch immer du gesprochen hast, es ist nicht HTTP, bestenfalls sowas ähnliches.

                    --
                    Henryk Plötz
                    Grüße aus Berlin
                    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
                    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
                    1. Hello,

                      Über was auch immer du gesprochen hast, es ist nicht HTTP, bestenfalls sowas ähnliches.

                      Mann bist Du schnell....
                      Haupsache, dass Du auch so schnell bist, wenn dann die nächsten Leute Alarm schreien, weil,ihre  Uploads  oder Downloads über HTTP nicht geklappt ahben, nur weil irgendein Trottel eine Zeilenschaltung benutzt hat oder irgend ein anderer Trottel keine.

                      Was macht Euch eigentlich imme alle (manche) so Obrigkeitshörig und verstzt Euch in den Glauben, dass weltweit alles einheitlich in Ordnung wäre???????  (Jede Fragezeichen steht für eien Dteailfrage dieser Fragengruppe)

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau