Bernd: nl2br funktioniert nicht

Aus einem Textfeld einer mysql-db möchte ich einen Ergebnis darstellen.

  
while ($row=mysql_fetch_row($result)) {  
echo nl2br($row[10]);  
echo("<br>");  
echo $row[10];  
}

ergibt:

--------------------------------
444444444444\r\n55555555555\r\n66666666666
444444444444\r\n55555555555\r\n66666666666

Ich weiß nicht recht, wo könnte ich zur Fehlersuche ansetzen?

Meine Ausgabe mache ich gleich hinter while, um sicher zu gehen, dass $row[10] unverfälscht bei der Funktion nl2br ankommt.

Kann sich jemand darauf nen reim machen?

Bernd

  1. Tach!

    444444444444\r\n55555555555\r\n66666666666
    Ich weiß nicht recht, wo könnte ich zur Fehlersuche ansetzen?

    Vermutlich hast du keinen Zeilenumbruch sondern die Zeichenfolge \ und n in der Datenbank stehen. Eine Testausgabe mit urlencode() (oder bin2hex(), aber schwierig zu lesen) sollte Aufschluss geben, was du da vorliegen hast.

    Meine Ausgabe mache ich gleich hinter while, um sicher zu gehen, dass $row[10] unverfälscht bei der Funktion nl2br ankommt.

    Wer soll es denn verfälschen, solange du nichts weiter mit dem Wert anstellst?

    dedlfix.

    1. Vermutlich hast du keinen Zeilenumbruch sondern die Zeichenfolge \ und n in der Datenbank stehen. Eine Testausgabe mit urlencode() (oder bin2hex(), aber schwierig zu lesen) sollte Aufschluss geben, was du da vorliegen hast.

      In phpmyadmin sind es aber 3 zeilen und die zeichenfolge/ r/n ist ni ht zu sehen.

      ber.d

      1. Tach!

        Vermutlich hast du keinen Zeilenumbruch sondern die Zeichenfolge \ und n in der Datenbank stehen. Eine Testausgabe mit urlencode() (oder bin2hex(), aber schwierig zu lesen) sollte Aufschluss geben, was du da vorliegen hast.
        In phpmyadmin sind es aber 3 zeilen und die zeichenfolge/ r/n ist ni ht zu sehen.

        Dann scheinen die Daten vielleicht doch richtig im DBMS zu stehen. Aber das bringt dich jetzt nicht weiter, solange du nicht anschaust, was denn wirklich bei dir ankommt. Also gib mal bitte die Felddaten mit urlencode() aus.

        dedlfix.

        1. Hi dedlfix,

          Dann scheinen die Daten vielleicht doch richtig im DBMS zu stehen. Aber das bringt dich jetzt nicht weiter, solange du nicht anschaust, was denn wirklich bei dir ankommt. Also gib mal bitte die Felddaten mit urlencode() aus.

          ...dann habe ich 444444444444%5Cr%5Cn55555555555%5Cr%5Cn66666666666

          Was sagt das aus?

          Grüße,Bernd

          1. Hallo,

            Also gib mal bitte die Felddaten mit urlencode() aus.
            ...dann habe ich 444444444444%5Cr%5Cn55555555555%5Cr%5Cn66666666666
            Was sagt das aus?

            das sagt aus, dass da weit und breit kein Zeilenumbruch vorkommt. Nur eine Folge von Vieren, dann ein Backslash, ein 'r', noch ein Backslash, ein 'n', ein paar Fünfen, ...
            Also: Du hast da, wo du mit diesem String hantierst, nicht die Steuerzeichen \r\n drin (die würden nach urlencode() als %0D%0A auftauchen), sonden die Zeichen Backslash, 'r', Backslash, 'n'. Da kann nl2br() natürlich nichts finden.

            Jetzt solltest du in der Verarbeitungskette schrittweise zurückgehen, dann müsstest du irgendwann die Stelle finden, an der der String verstümmelt wird.

            So long,
             Martin

            --
            Die neue E-Mailadresse des Papstes: mailto:urbi@orbi
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Tach!

              Jetzt solltest du in der Verarbeitungskette schrittweise zurückgehen, dann müsstest du irgendwann die Stelle finden, an der der String verstümmelt wird.

              Zm Beispiel kannst du (Bernd) einen Datenbank-Dump (Export im phpMyAdmin genannt) anfertigen. Was genau ist in diesem für das betroffene Feld zu sehen?

              dedlfix.

              1. Zm Beispiel kannst du (Bernd) einen Datenbank-Dump (Export im phpMyAdmin genannt) anfertigen. Was genau ist in diesem für das betroffene Feld zu sehen?

                Hi,

                dort ist folgendes:

                '444444444444\r\n55555555555\r\n66666666666'

                Bernd

                1. Tach!

                  Zm Beispiel kannst du (Bernd) einen Datenbank-Dump (Export im phpMyAdmin genannt) anfertigen. Was genau ist in diesem für das betroffene Feld zu sehen?
                  dort ist folgendes:
                  '444444444444\r\n55555555555\r\n66666666666'

                  Dann hast du in der Datenbank die Zeichenfolge , r, \ und n. Deine Daten sind also schon verkehrt in das DBMS gelangt.

                  dedlfix.

                  1. Dann hast du in der Datenbank die Zeichenfolge , r, \ und n. Deine Daten sind also schon verkehrt in das DBMS gelangt.

                    Hi dedlfix,

                    Hm... die Daten werden 2 mal kopiert, bzw. kontextwechselgerecht (wie ich meine) kopiert. Es kommen also genau 2 Dateiien in  Frage, die diese Arbeit verrichten. Nein, eigentlich sogar nur eine, denn die Zwischenstation habe ich auch bereits abgefragt, dort stimmen die Daten  noch.

                    Ich schau das gleich morgen früh nach. Momentan bin  ich grad fix und alle und hab mir ein Bier genehmigt. Erfahrungsgemäß verschlimmbessern "Reparaturen" unter diesen Umständen die Dinge nur ;-)

                    Also, morgen früh gehts bei mir weiter in  Sachen "debugging" :-)

                    Bis dahin erstmal danke.

                    Bernd

                    1. Also, morgen früh gehts bei mir weiter in  Sachen "debugging" :-)

                      Problem gelöst, ich hatte im Verlaufe des Scripts die einzusetzenden Daten gleich 2 mal mit mysql_real_escape_string() behandelt.

                      Danke und Gruß, Bernd