Tom: In Datei schreiben - Anführungs-Zeichen aber nicht unwandeln

Beitrag lesen

Hello,

BTW: Was spricht dagegen, den Text escaped 'reinzuschreiben?

Huch! Das solltest Du aber inzwischen wissen.

In Datenhaltungen (DB-Tabelle, Flatfile, Raw-Variablen im Speicher) gehören immer Raw-Daten, also nur Zeichen, die für die jeweilige Datenhaltung das neutrale Format bedeuten.

Viel wesentlicher ist es, das Speicherformat der Datei genau festzulegen. Wenn man sich für "Textdateien", also serielle Dateien mit variabler Satzlänge und Zeilenendezeichen benutzt, darf dieses Zeilenendezeichen in den Daten selber nicht vorhanden sein. Man muss es also vorher ersezten.

Was gut funktioniert ist:

Backslashes (rekursiv) aus dem ($_POST-)Variablen entfernen, wenn
  PHP automatisch welche hinzugefügt hat. --> get_magic_quotes_gpc()

Alle chr(4)-Zeichen aus den Daten gegen Leerzeichen ersetzen
 (dürften keine drin sein)

alle chr(127)-Zeichen aus den Daten gegen Leerzeichen ersetzen
 (dürften keine drin sein)

Alle Zeilenendezeichen in den Daten gegen chr(127) ersetzen

Datenfelder mit chr(4) und implode() aneinanderfügen und ein
  Zeilenendezeichen anhängen.

Datensatz abspeichern.

Nach dem Holen der Daten muss man das dann Schrit für Schritt rückgängig machen. Nur die Slashes muss man nicht sieder einfügen ;-)

Aber dafür muss man die auszugegebenen Daten HTML-gerecht aufbereiten, abhängig davon, in welchem Kontext sie ausgegeben werden sollen:
 - normaler HTML-Text
 - Textarea, values von inputs
 - Links
 - Parameter von Links

Ich hoffe, ich konnte dich da noch ein bisschen verwirren. Mach so 30 bis 50 abgegrenzte Versuche, dann wird Dir alles klar.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen