Maskierung von Sonderzeichen

  • Guten Morgen Zusammen,


    ich hab ein kleines Problem. Ich lass auf meiner Seite Daten aus einer SQL Datenbank abfragen.

    Dort gibt es Einträge die mit Anführungszeichen versehen sind.


    SQL-Datenbankeintrag: Gehe zum Ordner "Projekt"

    Ausgabe auf der Seite: Gehen zum Ordner \"Projekt\"


    Ich weiß, wenn ich direkt im HTML Code Anführungszeichen oder Sondernzeichen ausgeben möchte, müssen diese maskiert werden. Kann ich in dem Fall irgendwie die automatisch hinzugefügte Maskierung entfernen oder muss ich einfach darauf achten, keine Anführungszeichen in den Datenzellen der SQL Datenbank zu haben?


    Ausgelesen wird die Zelle mit

    Code
    1. addslashes($goto)

    Vielen Dank für eure Hilfe

  • Ich weiß, wenn ich direkt im HTML Code Anführungszeichen oder Sondernzeichen ausgeben möchte, müssen diese maskiert werden.

    WHAT??? Seit wann denn das?!

    Code
    1. <div>Warum sollen "Anführungszeichen" nicht gehen, oder auch Sonderzeichen, wie bspw. ⌨ oder ☺</div>

    Btw. gibt es bei HTML genau genommen keinen Code, sondern Quelltext. Mit HTML kann man nicht programmieren, das ist eine Auszeichnungssprache.

  • Da steht auch nichts davon. Da steht, dass Du das maskieren musst, wenn Du HTML direkt als Zeichenkette per PHP ausgeben willst:

    PHP
    1. echo "<div class=\"foobar\">some text with \"Quotes\"</div>";

    Das ist aber unnötig, weil man in PHP auch SingleQuotes nutzen kann, was in diesem Fall absolut Sinn macht:

    PHP
    1. echo '<div class="foobar">some text with "Quotes"</div>';

    Selbst wenn, wie in Deinem Falle das über eine Variable läuft:

    PHP
    1. $goto = '<div class="foobar">some text with "Quotes"</div>';
    2. echo $goto;

    Mit HTML und irgendwelchen Sonderzeichen hat das nichts zu tun.

    Aber ist das eigentlich Problem klar geworden, also weißt du was mein Problem ist?

    Ja, die Backslash-Maskierung ist zumindest für den beschriebenen Fall nicht nötig, daher hast Du kein Problem mehr...

  • Das Problem ist dass in der Datenbank steht: SQL-Datenbankeintrag: Gehe zum Ordner "Projekt".


    Dies befindet sich ein einer Spalte mit verschiedenen Einträgen.

    Über addslashes zeig ich die Einträge dann an.


    Auf der Website steht dann aber bei genau dem Fall: Gehe zum Ordner \"Projekt\"

  • Das habe ich verstanden... Du aber scheinbar nicht, dass Du die gar nicht mit Backslashes anzeigen musst.

    Lass die weg und gut is...


    Wenn in Deiner DB-Spalte Gehe zum Ordner "Projekt" steht, gib das so 1:1 aus, wo ist das Problem?


    Über addslashes zeig ich die Einträge dann an.

    Der Schritt ist überflüssig...

  • Nein, eben nicht. Ich hab ja nirgendswo Blackslahes stehen. Des wird eben nicht 1:1 so angezeigt.

    DB: "Projekt"

    Anzeige auf Website: \"Projekt\"


    Die Backslashes kommen da irgendwo automatisch hin die stehen weder in der DB noch im Code.

  • Da kommt nichts automatisch hin, DU selber hast doch in #1 und #5 gesagt, dass Du die PHP Funktion addslashes für die Ausgabe verwendest!

    Lass die weg! Die macht genau das: Backslashes vor zu maskierende Zeichen! Das ist aber nicht nötig