utf8_encode versagt bei " ?

frank manischewski

Grünschnabel
Hallo,
ich habe schon etwas rumgesucht und finde nichts ausser den Hinweis auf unicode, utf8_decode und utf8_encode.
das funktioniert auch aber ebend nicht komplett, Umlaute gehen aber z.B. Anführungszeichen (einfach und doppelt) werden davon scheinbar nicht berührt .(?)
ich lese eine Textdatei ein:

PHP:
if($datt = fopen("text.txt", "r")){   //text einlesen
while(! feof($datt)){
$zeile = fgets($datt, 1024);
$mytext = $mytext.$zeile;
}

das gebe ich dann in einem form aus:

PHP:
<textarea name="mytext" cols="80" rows="15"><? echo utf8_decode($mytext); ?></textarea>

nach submit mache ich folgendes:

PHP:
if($dats = fopen("text.txt","w+")){
Fputs($dats, utf8_encode($mytext));

aber sobald ein Anführungszeichen im String enthalten ist, wird dieses mit einem Backslash maskiert, was allerdings fatal ist, weil dieses im nächsten Durchlauf wieder maskiert wird und dadurch irgendwann eine endlos lange Backslashkette entsteht.
was mache ich falsch?

Danke und Grüße
frank
 
das ist eigentlich normal, dass diese Zeichen mit Backslash aus Formularfeldern kommen....
wenn du die Sache vorm codieren stripslashes()'t, sollte es keine Probleme geben:
PHP:
fputs($dats, utf8_encode(stripslashes($mytext)));
mit dem utf8_encode() hat es eigentlich weniger zu tun... da dies ASCII-Zeichen sind, passiert damit ohnehin nichts.
 
Zurück