Heim > Artikel > Backend-Entwicklung > Warum ist mein ``?
Unnötiges < Escape in HTML-Vorlagen: Mit Text/Vorlage behoben
Ein aktuelles Problem trat in einem Entwicklungstool auf, das Vorlagen für die Dateigenerierung verwendete, insbesondere Readmes und Lizenzen. Alles funktionierte reibungslos, außer in den Fällen, in denen das < Das Zeichen würde sich in < verwandeln. Die entsprechenden > Das Zeichen blieb davon unberührt.
Um das Problem zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
<code class="pawn">#include <{{.Repo}}></code>
Hier hätte der Repo-Parameter wie erwartet eingefügt werden sollen, was zu Folgendem führte:
#include <sometext>
Das tatsächliche Ergebnis war jedoch:
#include &lt;sometext>
Die Dokumentationsanalyse lieferte keine eindeutige Erklärung für dieses Verhalten. Für die > schien es unlogisch. Das Zeichen bleibt davon unberührt, während < Das Zeichen wurde entkommen.
Die Lösung liegt im Verständnis des Zwecks von HTML/Template. Es wurde speziell für die Generierung von HTML-Ausgaben entwickelt und bietet automatisches kontextsensitives Escapen, um das Einschleusen von Code zu verhindern. In der Dokumentation heißt es eindeutig:
html/template dient nur der Generierung einer HTML-Ausgabe. Es bietet die gleiche Schnittstelle wie das Paket text/template und sollte anstelle von text/template verwendet werden, wenn die Ausgabe HTML ist.
Wenn die Ausgabe nicht HTML ist, wie es hier bei einer Readme-Datei der Fall ist, ist sie es Es ist besser, Text/Vorlage zu verwenden. Diese Vorlagen-Engine maskiert keine Daten und löst so das Problem der unnötigen Zeichenkonvertierung. Durch den Wechsel zu Text/Template wurde die erwartete Ausgabe erreicht:
#include <sometext>
Diese Unterscheidung zwischen HTML/Template und Text/Template stellt sicher, dass kontextsensitives Escapen nur bei Bedarf angewendet wird, wodurch unerwartete Zeichenkonvertierungen in Non verhindert werden -HTML-Ausgabeszenarien.
Das obige ist der detaillierte Inhalt vonWarum ist mein ``?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!