"\"-Zeichen Herausfiltern
Melli
- php
Hallo,
ich hab ein Problem. Ich speichere mit PHP einen Text in eine .txt-datei.
Folgender Text
hdfgdh "hjjg" kdskh'kjkkj 'jkj'
wird zu
hdfgdh "hjjg" kdskh'kjkkj 'jkj'
Ist dafür vieleicht das verantwortlich?
$story_text = preg_replace('/\r\n|\r|\n/', '<br>', $story_text);
Eigentlich will ich damit nur die Zeilenumbrüche in <br>umwandeln.
Wie kann ich die ""-Zeichen verhindern?
mfg Melli
Moin Melli,
Ist dafür vieleicht das verantwortlich?
$story_text = preg_replace('/\r\n|\r|\n/', '<br>', $story_text);
Du maskierst den \ er wird dann nicht mehr erkannt.
Mache es so:
$story_text = preg_replace('\r\n|\r|\n','
Wobei ich nir nicht sicher bin ob das Pipe so funtzt.
Ansonsten:
$text = str_replace('\r\n','<br>',$text);
regds
Mike
Hallo,
das hat irgendwie nicht mein Problem gelöst, der Text wird immer noch mit \ vor den ' und " gespeochert.
mfg melli
Moin Melli,
kannst du bitte mal deinen "neuen" Code posten.
regds
Mike
Hi Mike,
$story_text wird aus einer Textarea übergeben
//hier sollen die Zeilenumbrüche herausgefiltert wetden und durch <br> ersetzt werden
$story_text = str_replace('\r\n','<br>',$story_text);
//$story_text wird mit ein paar anderen variablen in eine .txt-datei gespeichert
$inhalt="$author_name
$diezeit
$chapter_title
$next_text_1
$next_text_2
$story_text";
$fq = fopen("$datei","a+");
fputs($fq,$inhalt);
fclose($fq);
//und wird dann auch wieder ausgelesen und ausgegeben
$array = file($datei);
echo "$array[5]";
Tja in der Textarea wurde eingegeben:
hdfgdh "hjjg" kdskh'kjkkj 'jkj'
Gesoeichert und ausgegeben wird:
hdfgdh "hjjg" kdskh'kjkkj 'jkj'
mfg Melli
Hi!
Kannst ja mal das probieren:
<?php
//get text
$text = $_POST['text'];
/***********************
* Jetzt ist darauf zu achten, das schon
* von dem formular die entities mitgesendet werden.
* darum wollen wir diese nun beseitigen.
***********************/
$text = str_replace("'", "'", $text); //in "" müssen ' nicht entitiet werden!
$text = str_replace('"', '"', $text); //in '' müssen " nicht entitiet werden!
$text = nl2br($text); //Zeilenumbrüche umwandeln.
$text = str_replace('<br>', '<br />', $text); //XHTML konform machen.
$fhandle = fopen('bla.txt', 'w+');
fwrite($text, $fhandle);
fclose($fhandle);
//-- Soweit so gut, jetzt kannst du noch schauen obs geklappt hatt:
header('Content-type: text/plain'); //Verhindert das html verwendet wird.
print $text;
?>
Hoffe es funktioniert und ist verständlch..
Mfg, EmCee
Hello,
schau Dir mal die Bemerkungen zu den Funktionen stripslashes(), addslashes() und get_magic_quotes_gpc() an.
Dann sollte es Dir klar werden, was PHP da macht und warum.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
ok, danke euch allen, hab das Problem kapiert und auch schon gelöst.
mfg Melli
Hi,
Wie kann ich die ""-Zeichen verhindern?
Die -Zeichen werden automatisch erzeugt, wenn macicquotes in der php.ini aktiviert sind.http://de3.php.net/manual/de/function.get-magic-quotes-gpc.php. Das ist, aus Sicherheitsgruenden, gut so.
Zur Ausgabe verwendest Du stripslashes() http://de3.php.net/manual/de/function.stripslashes.php, Zeilenumbrueche wandelst Du mit nl2br() in Strings mit BR-tags http://de3.php.net/manual/de/function.nl2br.php.
Gruesse Joachim