Seite 1 von 2

Escape Zeichen \ vervielfacht sich einfach von selbst

Verfasst: 19.10.2004 21:31
von rox²³
Mal wieder ein Beitrag für die X - Akten ^^.

Ich bin erhlich gesagt ratlos.
Wenn ich bei mir über ein Formular HTML code abschicke wird der mit:

$text = str_replace("<","& lt;",$text);
$text = str_replace(">","& gt;",$text);
$text = str_replace("\"","& #34;",$text);
$text = str_replace("'","& #39;",$text);

geändert das er nicht ausgeführt wird.

Allerdings macht er dann vor jedes " ein \ also \" aus welchem Grund auch immer.

Aber es kommt noch besser...

Ich hab natürlich ne Vorschau wo ich mir das ganze angucken kann.
Wenn ich jetzt erneut die Vorschau betätige wird das \ schon 3 mal angezeigt (\\\).

Bei erneuter Vorschau dann 7 \\\\\\\
Und bei nochmaliger Vorschau dann 15 \\\\\\\\\\\\\\\

Und so weiter....

Natürlich kann ich nicht $text = str_replace("\\","",$text); nutzen aus dem Grund wenn ich mal php code sende in dem HTML vorkommt und die " escaped werden müssen würden die ja auch verschwinden.

Jetzt stellt sich mir die Frage wo kommen die her und aus welchem Grund?
Und was kann ich dagegen tun?

Verfasst: 20.10.2004 00:08
von Blutgerinsel
kannst du nicht einfach nach der BBCODE Ersetzung Sache alle was mit <gfgfdg> anfängt ersetzen mit nichts???

Verfasst: 20.10.2004 00:23
von rox²³
Das versteh ich jetzt nicht ganz. :-?

Der BBcode ist ja zum posten von html & php Code wenn ich da was mit nichts ersetze dann haut ja der Code nicht mehr hin.

Verfasst: 20.10.2004 00:33
von Blutgerinsel
hmm wenn ich nach suche
kann ich es ersetzen
http://pcre.nophia.de/evaluate/ecf10db4 ... php#output

alles was ich nicht finde sollte eigentlich htmlentities oder htmlspecialchars finden umwandeln in HTML Sonderzeichen.....

ohne manual zu gucken that's your job *g*

Verfasst: 20.10.2004 00:46
von rox²³
Mein problem ist ja eigentlich nicht der code an sich der wird auch astrein ausgegeben. Nur komischerweise bekomme ich bei etwa so einer HTML Zeile:

Code: Alles auswählen

<td class="style10" colspan="2"><b>&Uuml;berschrift:&nbsp;</b><input name="thema" /></td>
Das hier ausgegeben:

Code: Alles auswählen

<td class=\"style10\" colspan=\"2\"><b>&Uuml;berschrift:&nbsp;</b><input name=\"thema\" /></td>
Es kommt mir so vor als ob der Server automatisch escaped. Was er nicht machen darf da es sich ja um HTML handelt und nicht um HTML in php.

Da ich das ausgelesene gleich wieder über die Template Funktion ins Textfeld eintragen lasse. Erscheint das dann auch so im Textfeld.

Bei nochmaliger Vorschau setzt er dann wieder das Escape Zeichen...usw.

Mir ist es aber ein Rätsel wieso er das macht mir ist keine Funktion bekannt die sowas macht.
Davon abgesehen benutze ich nur str_replace um die <> in HTML Sonderzeichen zu konvertieren und preg_replace um BBCode in HTML code umzuwandeln.

Verfasst: 20.10.2004 08:06
von larsneo
überprüf' einmal die magic_quotes einstellungen

Verfasst: 20.10.2004 10:20
von rox²³
magic_quotes_gpc: ON
magic_quotes_runtime: OFF
magic_quotes_sybase: OFF

EdIT: Ich habs abgestellt und jetzt funktioniert es super THX

Verfasst: 20.10.2004 11:44
von Blutgerinsel
magic_quotes mit dem hab ich jetzt nicht gerechnet :wink:

Verfasst: 20.10.2004 12:20
von rox²³
Muss nochmal nachhaken zwecks dem magic_quotes.
Kann man die auch im Script abstellen wenn man an die Server Einstellungen nicht rankommt?

Mein Hoster hat die z.B. auch auf ON.

Verfasst: 20.10.2004 12:46
von larsneo
siehe http://www.php-faq.de/q/q-magic-quotes.html
generell ist die einstellung übrigens gar nicht die schlechteste - also besser die variablen entsprechend behandeln.