dedlfix: Artikel zum Kontextwechsel

Beitrag lesen

Tach!

Es ist viel mehr Aufwand, jedes Mal darüber nachzudenken und vor allem sicherzustellen, ob und dass typografische Zeichen verwendet werden oder nicht.
Verstehe ich nicht. Die Frage nach dem Ob und dem Dass lässt sich ohne Aufwand mit ja beantworten.

Ich hatte hier eher im Sinn, dass die Daten von irgendwoher kommen und nicht als Text im Code stehen. In dem Fall mache ich mir keine Gedanken, ob da typografische Anführungszeichen drin stehen oder irgendwas ganz anderes. Wenn die Aufgabe lautet, diese Daten in HTML einzufügen, dann kommt da ein htmlspecialchar() zu Einsatz. Oder mysqli_real_escape_string() für (My)SQL-Statements, oder was auch immer der Kontext verlangt. Es hilft in solchen Fällen kein bisschen, sich Gedanken um Escaping-Erleichterungen zu machen.

Natürlich löst die Verwendung von „“ (“”) nicht das Problem des Escapens von <, > und &.
Aber das des Escapens von ". Was besonders problematisch ist, weil " den Quelltext besonders unübersichtlich macht, da es – im Gegensatz zu <, > u.(a.) Klammern – sowohl als öffnendes als auch als schließendes Zeichen verwendet wird.

Du behandelst hier den einen Fall, dass du das Zeug direkt selbst in zum Beispiel ein HTML-Template oder ein String-Literal schreibst. Das war aber auch grad nicht das Problem des OP. Wenn du einen andersgelagerten Fall diskutieren wolltest, solltest du das dazusagen.

Dass dann nicht escapet werden muss, ist ein äußerst nützlicher Nebeneffekt.

Nur für den Fall, dass du die Anführungszeichen zu Fuß schreibst. Für die Verarbeitung von unbekannten Daten ist es irrelevant, ob du solche drin hast oder nicht. Es müssen für alle Sonderzeichen eines bestimmten Kontextes geeignete Maßnahmen ergriffen werden.

dedlfix.