php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.11.2008, 22:14  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard [Erledigt] Verschwundene \r

Ich habe eine Tabelle mit der Kollation utf8_general_ci mit einer Spalte vom Typ longtext.

Ich erstelle einen normalen Text in einem Editor. Wenn ich mir im Editor die Steuerzeichen anzeigen lasse, dann sehe ich am Zeilenende CR LF

Mit STRG-A STRG-C kopiere ich den Text dann in die Zwischenablage und füge ihn im phpmyadmin in das oben beschriebene Feld ein.

Wenn ich nun mit einem PHP-Script die Spalte auslese und den Text per mail versende, dann sind die Zeilenumbrüche nicht mehr da, alles ist in einer einzigen Zeile.

Einer der Email RFCs verlangt ja, dass Zeilenumbrüche \r\n sein müssen. Ich habe daraufhin vor dem Versenden mit str_replace aus "\n" jeweils "\r\n" gebaut, nun ist alles stimmig.

Frage:
das Script lief bisher (immer ohne den str_replace) auf einem Server mit php4 und mysql4, gleiche Kollation, hier habe ich php5 und mysql5.

Liegt es an der neuen MySql-Version, dass das cr verlorengeht?
Oder was kann noch die Ursache sein?
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.11.2008, 09:14  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Hab ich das jetzt richtig verstanden: deine \n bleiben, aber \r nicht? Was benutzt du denn für ein Betriebssystem? Vielleicht gehen die ja schon in der Zwischenablage verloren?
cycap ist offline   Mit Zitat antworten
Alt 05.11.2008, 12:20  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Im Notepad++ kann ich die cr lf noch sichtbar machen. Wenn ich das über die Vista-Zwischenablage in ein neues Notepad++-Fenster transportiere, sind die Steuerzeichen noch da.
Wenn ich die Zwischenablage mit Phpadmin in das Feld kopiere, die Zeile speichere, dann neu anzeigen lasse und den Feldinhalt über die Zwischenablage in ein leeres Editorfenster übertrage, dann sind die cr lf wieder da.
Nur wenn ich das Feld mit SELECT / fetch_assoc lese und per mail() rausschiebe, dann sind offensichtlich die cr (\r) weg und die lf noch da, denn ich kann \n mit \r\n ersetzen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 05.11.2008, 14:03  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Über ein
PHP-Code:
addcslashes($str"\r\n"); 
kannst du mal prüfen, was wirklich los ist.
Kann es sein, dass phpMyAdmin aus \r\n \n macht?
Was tust du? Gibst du den Feldinhalt aus und kopierst die Ausgabe, um die CRLF wiederzubekommen? Dann könnte es sein, dass beim kopieren LF automatisch durch CRLF ersetzt wird.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 05.11.2008, 14:09  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ich glaube nicht das der phpmyadmin schuld ist, sondern das OS bzw. der Browser. Und zwar bei der Textarea. Guck doch mal was passiert wenn du den Text in ein anderes Formular mit Textarea kopierst... also schnell eins bauen, musst es ja nur ausgeben und nicht speichern.
cycap ist offline   Mit Zitat antworten
Alt 05.11.2008, 14:53  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

ich bin jetzt schon einen schritt weiter und habe den Verdacht, dass das ganze etwas mit UTF8 zu tun haben könnte:

ich habe das Script in einen parallelen Ordner auf der gleichen Domain neu installiert und auch alle Tabellen angelegt (aus Dump von anderer Maschine)

Script 1 (mit dem cr-Fehler) verbindet auf tab1 mit Kollation utf8_general_ci
Script 2 (das neu installierte) verbindet auf die neue tab2 mit Kollation utf8_unicode_ci

Script2 arbeitet wie erwartet und behält die cr.

Warum die Kollationen verschieden sind, kann ich nicht erklären, ist mir auch grade erst aufgefallen.

Ich werde wohl bei tab1 die Kollation ändern und denke, dass das Problem sich dann verflüchtigt, mich interessiert aber dennoch, wie so was passiert.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 05.11.2008, 15:42  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Über ein
PHP-Code:
addcslashes($str"\r\n"); 
kannst du mal prüfen, was wirklich los ist.

ich hab den Text ausgelesen und in eine variable $text gepackt. Wenn ich den mit echo im Browser ausgebe, dann sehe ich erwartungsgemäß keine Umbrüche.

ich habe dann $text = addcslashes($text, "\r\n"); eingefügt. echo $text zeigt dann an den Stellen, an denen Zeilenschaltungen sind ein \r\n im Klartext an.

Insofern stimmt die Überschrift zu diesem Thread schon nicht, weil die \r doch da sind.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 05.11.2008, 15:44  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

jetzt hast du mich verwirrt
cycap ist offline   Mit Zitat antworten
Alt 05.11.2008, 15:45  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
ich hab den Text ausgelesen und in eine variable $text gepackt. Wenn ich den mit echo im Browser ausgebe, dann sehe ich erwartungsgemäß keine Umbrüche.
Achso, Browser geben Zeilenumbrüche als wirklich nicht aus??
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 05.11.2008, 22:51  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Jetzt steht der Thread im total falschen Forum, und ich hab das Ganze erstmal hingeschmissen. Folgendes ist nun klar:

Ich hab ein neues Script gemacht, den Text aus der DB gelesen und ihn an die Supportmail geschickt, auf der sie dann auch landen soll. Ergebnis: Zeilenumbrüche sind weg.

Ich hab dann die mail()-Anweisung gedoppelt und lasse zwei mails rausgehen, die zweite zu meiner normalen Mailadresse. Ergebnis1: Zeilenumbrüche sind weg. Ergebnis 2: Zeilenumbrüche sind drinne. (gleicher $text mit zweimal mail() verschickt).

Beide Adressen hole ich mit dem selben Outlook Express ab. Die mails werden von OE immer gleich dargestellt - man erkennt die fehlenden Zeilenumbrüche durch Blick in den Source (Das ganze ist nur aufgefallen, weil der Kunde die Mail mit Outlook abholte und dort das Problem gesehen hat).

Kann es sein, dass der andere Mailserver nicht alle Gurken im Glas hat? Der läuft auf einem Win2000-Server, wohingegen die richtig formatierten Mails auf Linux reinkommen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
\\r php, notepad steuerzeichen anzeigen, notepad crlf ersetzen, php \\r, notepad cr ersetzen, r php, \\\r\ php, steuerzeichen anzeigen notepad, notepad lf ersetzen, http://www.php.de/datenbanken/48742-erledigt-verschwundene-r.html, notepad cr lf ersetzen, cr lf ersetzen in notepad, notepad crlf einblenden, notepad cr lf ausblenden, notepad ersetzen durch cr, crlf ersetzen, editor steuerzeichen anzeigen, notepad ersetzen linefeed, notepad cr durch lf ersetzen, notepad lf durch crlf ersetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum