1

在我无法控制的函数中,数据正在通过

return xmlFormat(rc.content)

我以后想做一个

<cfoutput>#resultsofreturn#</cfoutput>

问题是所有的 HTML 标签都被转义了。

我考虑过

<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>

但我不确定这些是否互为倒数

4

2 回答 2

4

从 CF 10 开始,您应该使用较新的encodeFor功能。这些函数考虑了高位 ASCII 字符以及 UTF-8 字符。

旧的和破灭的

  • XmlFormat()
  • HTMLEditFormat()
  • JSStringFormat()

新热点

  • encodeForXML()
  • encodeForXMLAttribute()
  • encodeForHTML()
  • encodeForHTMLAttribute()
  • encodeForJavaScript()
  • encodeForCSS()

这些函数的输出因上下文而异。

然后,如果您只是获得转义的 HTML,您可以使用 Jsouo 或 Jakarta Commons Lang 库将其转换回来。相关的 SO 答案中有一些示例。

显然,最好的解决方案是更新现有函数以返回任一版本的内容。有没有办法复制该函数以返回未转义的内容?或者您可以从使用 Java 解决方案转换 HTML 的新函数中调用它吗?

于 2018-04-30T05:44:42.727 回答
4

就像 Adrian 总结的那样,最好的选择是实施一个系统来获得预编码的值。

在当前状态下,您使用的字符串已针对 xml 文档进行编码。一种选择是使用文本创建一个 xml 文档,然后将文本从 xml 文档中解析出来。我不确定这种方法的效率如何,但它会将文本返回到它的预编码值。

function xmlDecode(text){
    return xmlParse("<t>#text#</t>").t.xmlText;
}

TryCF.com 示例

于 2018-04-30T18:34:07.100 回答