Gibt es in Python eine ähnliche oder äquivalente Funktion zur PHP-Funktion htmlspecialchars()? Das nächste, was ich bisher gefunden habe, ist htmlentitydefs.entitydefs().Gibt es ein Python-Äquivalent zur PHP-Funktion htmlspecialchars()?
Antwort
Wenn Sie django 1.0 verwenden, sind Ihre Vorlagenvariablen bereits codiert und können angezeigt werden. Sie können auch den Operator safe
{{ var|safe }}
verwenden, wenn Sie nicht möchten, dass er global eingeschaltet ist.
Das nächste, was ich weiß, ist .
Sie wollen wahrscheinlich xml.sax.saxutils.escape:
from xml.sax.saxutils import escape
escape(unsafe, {'"':'"'}) # ENT_COMPAT
escape(unsafe, {'"':'"', '\'':'''}) # ENT_QUOTES
escape(unsafe) # ENT_NOQUOTES
Werfen Sie einen Blick auf xml.sax.saxutils.quoteattr, könnte es sinnvoller sein, für Sie
Das html.entities
Modul (htmlentitydefs
für Python 2.x) codepoint2name
ein Wörterbuch enthält die sollte Mach was du brauchst.
>>> import html.entities
>>> html.entities.codepoint2name[ord("&")]
'amp'
>>> html.entities.codepoint2name[ord('"')]
'quot'
from django.utils.html import escape
print escape('<div class="q">Q & A</div>')
Ich stimme dafür, weil ich nichts wie einige der anderen Antworten parsen möchte, oder auch nur suchen und ersetzen möchte, ich möchte eine einzige Funktion, die alles für mich tut. – paulmorriss
Ich denke, der einfachste Weg, ersetzen Sie einfach zu bedienen ist:
text.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
PHP nur die vier Einheiten mit htmlspecialchars entkommt. Beachten Sie, dass Sie, wenn Sie ENT_QUOTES in PHP festgelegt haben, die Anführungszeichen durch & # 039; ersetzen müssen. eher als & quot ;.
Aufbauend auf @ garlon4 Antwort, können Sie Ihre eigenen htmlspecialchars(s)
definieren:
def htmlspecialchars(text):
return (
text.replace("&", "&").
replace('"', """).
replace("<", "<").
replace(">", ">")
)
Es scheint, dass es mehr als ein offensichtlicher Weg ist, es zu tun! O nein! –