dennis: script macht immer \ vor ein "

hallo freunde,

hab folgende frage:
ich habe ein script das eine datei ausließt (html oder txt) und das in nem textfeld fenster anzeigt. dort kann ich dann die datei verändern wie ich möchte. nur wenn ich ein " anführungsstrich eingebe macht er mir vor jeden anführungstrich ein \ slash rein. warum das? bitte helft mir. danke

<?
if (!isset ($artikel_array[0])) {
        if (file_exists ("galerie.html")) {
                $artikel_array = file("galerie.html");
        }
} else {
        @$filehandle = fopen("galerie.html","w");
        if (!$filehandle) {
                echo"<font color="#ff0000"><b>ACHTUNG Fehler!</b><br>\n";
                echo "Datei ließ sich nicht zum Schreiben öffnen!<br></font>\n";
} else {
        $translation = get_html_translation_table(HTML_ENTITIES);
        $anzahl = count($artikel_array);
        for($i=0; $i < $anzahl; $i++) {
                $artikel_array[$i] = strtr($artikel_array[$i], $translation);
                $artikel_array[$i] = str_replace("\r"," ",$artikel_array[$i]);
                $artikel_array[$i] = str_replace("\n", "<br>",$artikel_array[$i]);
        } // Ende for
        $artikel_string = implode("\n", $artikel_array);
        $erfolg = fwrite($filehandle, $artikel_string);
        $erfolg = fclose($filehandle);
        echo"<font size="3" face="Arial"><b> Der Artikel wurde aktualisiert</b><p>\n";
} // Ende if (!$filehandle)
} // Ende if (!isset...
$translation = get_html_translation_table(HTML_ENTITIES);
$translation = array_flip($translation);
$anzahl = count($artikel_array);
for($i = 0; $i < $anzahl; $i++) {
        $artikel_array[$i] = strtr($artikel_array[$i], $translation);
        $artikel_array[$i] = str_replace("<br>","\n",$artikel_array[$i]);
}
?>

ciao

  1. http://de.php.net/manual/de/function.stripslashes.php

    grüsse

    Marc

  2. ich habe ein script das eine datei ausließt (html oder txt) und das in nem textfeld fenster anzeigt. dort kann ich dann die datei verändern wie ich möchte. nur wenn ich ein " anführungsstrich eingebe macht er mir vor jeden anführungstrich ein \ slash rein. warum das?

    Das macht er weil in manchen Fällen vor Anführungszeichen ein Schrägstrich nötig ist. Ein Beispiel ist die MySQL-Datenbank, in der SQL-Befehle als Text übergeben werden:

    select alter from tabelle where name="Onkel Hotte"

    Am Ende hast Du Anführungszeichen, die die Daten ('Onkel Hotte') für name umschließen. Hast Du in diesen Daten selbst Anführungszeichen, gibt's ein Problem:

    select alter from tabelle where name="Onkel "Bauer" Hotte"

    Die Anführungszeichen in den Daten müssen maskiert werden, damit erkennbar ist, wo Daten anfangen und wo sie aufhören. Zum Maskieren wird der Schrägstrich benutzt:

    select alter from tabelle where name="Onkel "Bauer" Hotte"

    PHP macht das in Annahme unfähiger Benutzer automatisch, es lässt sich aber auch abschalten. Eine Detailbesprechnung findest Du etwas weiter unten hier im Forum im Thread [pref:t=35267&m=192242].

    Gruß,
      soenk.e