Probleme mit nl2br beim MAC!!! :o(

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

  • Probleme mit nl2br beim MAC!!! :o(

    Hallo Ihr alle,

    ich hebe ein Problem mit Zeilenumbrüchen beim MAC.
    Wenn ich eine eingabe in ein Textfeld mit dem Befehl nl2br() bearbeite, macht er mir beim MAC keine Zeilenumbrüche!!! Beim PC schon, hatte jemand schon mal so ein ähnliches Problem, oder weiß jemand eine Lösung????????????


    Vielen Dank im vorraus

    DaCaT

  • #2
    nl2br() ist unzureichend programmiert, da es nur Unix-Style (und somit immerhin auch als Nebeneffekt Windows-Style) Zeilenumbrüche konvertiert. Nimm lieber so etwas in der Art:

    function extended_nl2br($subject)
    {
    return(preg_replace("/(\015\012)|(\015)|(\012)/i","<br>",$subject));
    }

    CAT Music Files

    Kommentar


    • #3
      Hi Leute,

      Ich habe gerade ne gute Stunde, ohne Erfolg, mit:

      $string = str_replace('\n', '', $string);

      Umprüche zu entfernen versucht und ich verstehe nicht
      wieso?

      Dann hab ich das hier gefunden:

      (\015\012)|(\015)|(\012)

      und das beschreibt anscheinend genau das was ich
      weghaben will, danke nochmal an Sky.

      Doch jetzt frag ich mich natürlich was das
      für ein Zauberspruch ist und in welchem Buch
      der steht. Würde gerne verstehen was ich da
      jetzt gemacht habe. (OK->Das ist ein regulärer Ausdruck
      doch was sind das für Zahlen bzw. wie nennt man die)

      Für jeden Tip sehr dankbar und nette Grüße, hOk

      Kommentar


      • #4
        das sind ascii codes in oktaler notation
        nämlich:
        012 = Line Feed (LF) => dezimal 10
        015 = Carriage Return (CR) => dezimal 13

        als physischen zeilenumbruch verwenden:

        die meisten Unix-Derivate incl. Linux => LF => \012
        MS-DOS und alle Windows-Varianten => CR\LF => \015\012
        Mac-OS CR => \015

        beim einlesen werden daraus logische newlines (\n) \n entspricht bei:

        unix und derivaten => \012
        MS-DOS und alle Windows-Varianten => \012
        Mac-OS CR => \015

        nl2br wandelt ausschliesslich unix "\n"s um also Ascii-Zeichen \012, somit sozusagen fast zufällig auch das von dos/windows aber NICHT das \015 das vom mac kommt.

        während nun also nl2br den "auftrag" hat ein zeichen \012 durch <br/> zu ersetzen, geht skys funktion da weiter
        und ersetzt was entweder \015\012 oder \012 oder \015 ist durch <br>.

        siehe auch:
        http://selfaktuell.teamone.de/artike...zeilenumbruch/

        hope that helps
        sonja

        Kommentar


        • #5
          Genial, so langsam gehen bei
          mir die Lämpchen an, danke sonja.

          Lese mir gerade den schönen selfhtml-Artikel durch
          und ich habe da noch zwei kleine Fragen:

          1.) Könnte man dann auch mit diesem Ausdruck:
          ((\r\n)|(\r)|(\n)) - dasselbe erreichen.

          2.) Oder weshalb verwendet man die oktale Notation?

          vielen Dank nochmal, hOk

          PS.: Doch noch ne kleine Frage, und zwar wenn ich
          ne Text für den User ausgebe, mit welchen Zeichen
          soll ich dann am besten das Zeilenende markieren,
          ich würde jetzt erstmal denken dass ich mit \r\n
          bzw. \015\012 für alle drei plattformen nen Umbruch
          hinkriege ?

          Kommentar


          • #6
            Ich glaub jetzt hab ichs:

            zu 1.) ist nicht zu empfehlen, da \n und \r nicht
            immer die selbe Bedeutung wie \12 und \15 haben

            zu 2.) ergibt sich aus 1.) also immer oktal oder hexa
            Notation verwenden.

            und zur letzten ) Wenn ich ein Zeilenende mit \015\012
            notiere hab ich auf win nen schönen Zeilenumbruch, und
            auf mac hab ich nen Umbruch mit nem \012 zu viel und
            unix nen \015 zuviel. Tja jetzt brächte ich wohl doch
            nen Mac und Unix REchner um das zu test....:-)

            viele nette Grüße und einen schönen Tag, hOk

            Kommentar


            • #7
              nimm einfach <br> das machen se alle

              Kommentar


              • #8
                Ja, würde ich ja, ist halt für Textdateien,
                gruß, hOk

                Kommentar


                • #9
                  da sollts aber ein simples \n tun - das interpretiert das jeweilige os dann schon wie es das braucht

                  Kommentar


                  • #10
                    Ah ja danke, schön so werde ich es machen,
                    vielen Dank und nette Grüße, hOk

                    Kommentar


                    • #11
                      Hm

                      habe gerade versucht


                      function extended_nl2br($subject)
                      {
                      return(preg_replace("/(\015\012)|(\015)|(\012)/i","<br>",$subject));
                      }

                      anzuwenden, gaet leider nicht, woran kann das hängen?????


                      Ich drehe bald durch!!!!

                      Kommentar


                      • #12
                        hmm geht doch - wie rufst du die funktion denn auf?

                        schon per echo?
                        echo extended_nl2br($testtext); zb?

                        Kommentar


                        • #13
                          ja

                          genau so, aber in der Datenbank stehen keine <br>'s!!!

                          Kommentar


                          • #14
                            wie jetz genauso(=>echo) und datenbank(=>wie passt das zusammen?) ?
                            vielleicht steh ich grad auf der leitung - aber post mal bitte deinen code, dann kann man dir auch helfen.

                            Kommentar


                            • #15
                              Der Code sieht so aus:


                              ...
                              function extended_nl2br($subject)
                              {
                              return(preg_replace("/(\015\012)|(\015)|(\012)/i","<br>",$subject));
                              }

                              extended_nl2br($text);

                              Danach wird $text und noch ein paar andere Variablen in eine MySQL datenbank geschrieben.

                              Kommentar

                              Lädt...
                              X