Python 中是否有与 PHP 函数 htmlspecialchars() 类似或等效的函数?到目前为止,我发现的最接近的是 htmlentitydefs.entitydefs()。
问问题
12263 次
8 回答
12
我知道的最接近的事情是cgi.escape。
于 2009-05-31T06:12:45.097 回答
7
from django.utils.html import escape
print escape('<div class="q">Q & A</div>')
于 2010-03-25T04:32:22.133 回答
4
在@garlon4 答案的基础上,您可以定义自己的htmlspecialchars(s)
:
def htmlspecialchars(text):
return (
text.replace("&", "&").
replace('"', """).
replace("<", "<").
replace(">", ">")
)
于 2016-03-01T17:48:11.757 回答
3
我认为最简单的方法就是使用替换:
text.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
PHP 只使用 htmlspecialchars 转义这四个实体。请注意,如果您在 PHP 中设置了 ENT_QUOTES,则需要将引号替换为 ' 而不是“。
于 2011-03-30T15:59:40.797 回答
3
您可能想要xml.sax.saxutils.escape:
from xml.sax.saxutils import escape
escape(unsafe, {'"':'"'}) # ENT_COMPAT
escape(unsafe, {'"':'"', '\'':'''}) # ENT_QUOTES
escape(unsafe) # ENT_NOQUOTES
看看xml.sax.saxutils.quoteattr,它可能对你更有用
于 2009-05-31T06:31:53.530 回答
1
该html.entities
模块(htmlentitydefs
适用于 python 2.x)包含一个字典codepoint2name
,它应该可以满足您的需要。
>>> import html.entities
>>> html.entities.codepoint2name[ord("&")]
'amp'
>>> html.entities.codepoint2name[ord('"')]
'quot'
于 2009-05-31T08:27:17.790 回答
1
只需要对五个字符进行转义,因此可以使用一个简单的单行函数:
def htmlspecialchars(content):
return content.replace("&", "&").replace('"', """).replace("'", "'").replace("<", "<").replace(">", ">")
于 2021-06-11T07:03:59.897 回答
-1
如果您使用的是 django 1.0,那么您的模板变量将已经被编码并准备好显示。如果您不希望全局打开它,也可以使用 safe
运算符。{{ var|safe }}
于 2009-05-31T06:11:00.810 回答