转义和取消转义 HTML
Escaping and unescaping HTML
在我无法控制的函数中,数据通过
返回
return xmlFormat(rc.content)
我以后想做一个
<cfoutput>#resultsofreturn#</cfoutput>
问题是所有 HTML 标签都被转义了。
我考虑过
<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>
但我不确定它们是否互为反义词
从 CF 10 开始,您应该使用较新的 encodeFor
函数。这些函数解释了高 ASCII 字符以及 UTF-8 字符。
又老又破
XmlFormat()
HTMLEditFormat()
JSStringFormat()
新热点
encodeForXML()
encodeForXMLAttribute()
encodeForHTML()
encodeForHTMLAttribute()
encodeForJavaScript()
encodeForCSS()
这些函数的输出因上下文而异。
然后,如果您只是被转义 HTML,您可以使用 Jsouo 或 Jakarta Commons Lang 库将其转换回来。有some examples in a related SO answer.
显然,最好的解决方案是将现有功能更新为 return 任一版本的内容。有没有办法复制该函数以便 return 未转义的内容?或者您可以从使用 Java 解决方案转换 HTML 的新函数中调用它吗?
正如 Adrian 总结的那样,最好的选择是实施一个系统来获得预编码值。
在当前状态下,您使用的字符串已针对 xml 文档进行编码。一种选择是使用文本创建一个 xml 文档,然后从 xml 文档中解析出文本。我不确定这种方法的效率如何,但它会 return 文本返回到它的预编码值。
function xmlDecode(text){
return xmlParse("<t>#text#</t>").t.xmlText;
}
在我无法控制的函数中,数据通过
返回return xmlFormat(rc.content)
我以后想做一个
<cfoutput>#resultsofreturn#</cfoutput>
问题是所有 HTML 标签都被转义了。
我考虑过
<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>
但我不确定它们是否互为反义词
从 CF 10 开始,您应该使用较新的 encodeFor
函数。这些函数解释了高 ASCII 字符以及 UTF-8 字符。
又老又破
XmlFormat()
HTMLEditFormat()
JSStringFormat()
新热点
encodeForXML()
encodeForXMLAttribute()
encodeForHTML()
encodeForHTMLAttribute()
encodeForJavaScript()
encodeForCSS()
这些函数的输出因上下文而异。
然后,如果您只是被转义 HTML,您可以使用 Jsouo 或 Jakarta Commons Lang 库将其转换回来。有some examples in a related SO answer.
显然,最好的解决方案是将现有功能更新为 return 任一版本的内容。有没有办法复制该函数以便 return 未转义的内容?或者您可以从使用 Java 解决方案转换 HTML 的新函数中调用它吗?
正如 Adrian 总结的那样,最好的选择是实施一个系统来获得预编码值。
在当前状态下,您使用的字符串已针对 xml 文档进行编码。一种选择是使用文本创建一个 xml 文档,然后从 xml 文档中解析出文本。我不确定这种方法的效率如何,但它会 return 文本返回到它的预编码值。
function xmlDecode(text){
return xmlParse("<t>#text#</t>").t.xmlText;
}