有没有Python等效的PHP函数htmlspecialchars()?

时间:2009-05-31 05:58:45

标签: php python html-entities htmlspecialchars

Python函数htmlspecialchars()中是否有类似或等效的函数?到目前为止,我发现的最接近的是htmlentitydefs.entitydefs()。

8 个答案:

答案 0 :(得分:12)

我所知道的最近的事情是cgi.escape

答案 1 :(得分:6)

from django.utils.html import escape
print escape('<div class="q">Q & A</div>')

答案 2 :(得分:3)

您可能需要xml.sax.saxutils.escape

from xml.sax.saxutils import escape
escape(unsafe, {'"':'&quot;'}) # ENT_COMPAT
escape(unsafe, {'"':'&quot;', '\'':'&#039;'}) # ENT_QUOTES
escape(unsafe) # ENT_NOQUOTES

查看xml.sax.saxutils.quoteattr,它可能对您更有用

答案 3 :(得分:1)

html.entities模块(python 2.x的htmlentitydefs)包含一个字典codepoint2name,它可以满足你的需要。

>>> import html.entities
>>> html.entities.codepoint2name[ord("&")]
'amp'
>>> html.entities.codepoint2name[ord('"')]
'quot'

答案 4 :(得分:1)

我认为最简单的方法就是使用replace:

text.replace("&", "&amp;").replace('"', "&quot;").replace("<", "&lt;").replace(">", "&gt;")

PHP仅使用htmlspecialchars转义这四个实体。请注意,如果您在PHP中设置了ENT_QUOTES,则需要用&amp;#039;替换引号。而不是&amp; quot;。

答案 5 :(得分:0)

如果您使用的是django 1.0,则您的模板变量已经过编码并可以显示。如果您不希望全局启用它,也可以使用safe运算符{{ var|safe }}

答案 6 :(得分:0)

在@ garlon4答案的基础上,您可以定义自己的htmlspecialchars(s)

def htmlspecialchars(text):
    return (
        text.replace("&", "&amp;").
        replace('"', "&quot;").
        replace("<", "&lt;").
        replace(">", "&gt;")
    )

答案 7 :(得分:0)

你可以将这段代码添加到你的python文件中,然后你就可以在python中使用这个函数了

def htmlspecialchars(str):
    str = str.replace("&", "&amp;")
    str = str.replace('"', "&quot;")
    str = str.replace("'", "&#039;")
    str = str.replace("<", "&lt;")
    str = str.replace(">", "&gt;")
    return str