Anführungszeichen bei Ausgabe im Textfeld

Martys

Erfahrenes Mitglied
Hallo,

ich habe heute mein erstes Gästebuch in PHP geschrieben, es basiert auf einem txt-File. Da ich Neuling in Sachen PHP bin galt es, einige Hürden zu nehmen.

Jetzt funktioniert es in groben Zügen, an eine Edit-Funktion werde ich mich die Tage setzen.

Ein Problem habe ich allerdings noch. Wenn ich im Textfeld Anführungszeichen ( " ) eingebe, werde diese "escaped", sprich sie werden so: \" dargestellt.

Hat jemand eine Ahnung woran das liegen könnte?

Das einzige was ich im Textfeld ersetzte sind Zeilenumbrüche mit
PHP:
$text = ereg_replace( "\n", "<br />", $text);

Vielen Dank schon mal,

Martys
 
Hi!

Sagen wir mal, der Text ist in der Variablen $gbtext.

Den würde ich dann so ausgeben:
PHP:
echo nl2br(htmlentities(stripslashes($gbtext)));

Zuerst (ganz innen!) entfernst du die Slashes, die die Anführungszeichen etc. entwerden.
Dann wandelst du alle Sonderzeichen (äöüßè etc.) in die richtigen HTML-Codes um.
Zum Schluss wandelst du per nl2br alle Zeilenumbrücke in <br />'s um und gibst deinen Text aus.

Mamphil
 
Danke für die Antwort, allerdings wurde nach

PHP:
$text = nl2br(htmlentities(stripslashes($text)));

die Ausgabe zerstückelt.

Ich habe es dann so gelöst:

PHP:
$text = htmlentities(stripslashes($text));
$text = ereg_replace( "\n", "<br />", $text);

Martys
 
Hi!
Original geschrieben von Martys
Danke für die Antwort, allerdings wurde nach

PHP:
$text = nl2br(htmlentities(stripslashes($text)));


die Ausgabe zerstückelt.
Das verstehe ich absolut nicht. Was meinst du mit "die Ausgabe wurde zerstückelt"? Wenn möglich, würde ich immer nl2br verwenden, weil sie vermutlich schneller ist (und sie ist einfacher zu tippen ;) )

Mamphil
 
Ich schreibe per

PHP:
// Schreibt Einträge
$gb="gb.txt";
$fp = fopen($gb, "a") or die("Konnte Datei nicht öffnen");
$nachricht = $name."|".$vorname."|".$email."|".$datum."|".$zeit."|".$text."\n";
if ($fp)
{
fwrite($fp, $nachricht);
fclose($fp);
}
// ENDE

die Eingaben aus dem Formular in meine gb.txt .
Nach
PHP:
$text = nl2br(htmlentities(stripslashes($text)));

wurden die Werte nicht in die richtig Zeile geschrieben, daher wurde meine Ausgabe "zerstückelt".
 
Ja, klar.
nl2br ersetzt die Zeilenumbrüche nicht, sondern ergänzt sie nur um den HTML-Zeilenumbruch.
Ich wusste nicht, dass du das in eine Zeile schreiben willst...

Mamphil
 
Zurück