从字符串中剥离非html标签/文本

时间:2018-07-02 14:11:14

标签: coldfusion coldfusion-2016

我有一个字符串,需要在xml节点中将其发送给第三方应用程序。然后通过该处的html解析器解析该字符串。该字符串可以具有html,但非html标记会出现问题。例如

<cfset str = "This mail was <b>sent</b> by Jen Myke <jmyke@mail.com> on June 20th.<br/> Click on <a href='http://google.com'>this link</a> for more information.">

字符串中也可能存在非UTF字符,这也会引起问题,但是我发现了一个旧博客文章,可以帮助删除非UTF。

<cfset str = reReplace(str, "[^\x20-\x7E]", "", "ALL")>

但是我无法弄清楚如何删除html相似的东西。

2 个答案:

答案 0 :(得分:2)

尝试使用encodeForXML()来包装字符串。这应该对在XML节点内使用的任何非ASCII字符进行编码。

<node>#encodeForXml(str)#</node>

如果您需要在属性中传递数据,则

<node attr=#encodeForXmlAttribute(str)#"/>

编辑:您可以在编码其余字符串之前尝试使用getSafeHTML()。这将使用XML配置文件从字符串中删除HTML标签,以设置您的AntiSamy设置。检查文档以获取更多信息。

答案 1 :(得分:0)

尝试更换

< to &lt; 
> to &gt;