首页 > 解决方案 > 从字符串中剥离非 html 标签/文本

问题描述

我有一个字符串,需要在 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。

标签: coldfusioncoldfusion-2016

解决方案


尝试用encodeForXML(). 这应该对任何非 ASCII 字符进行编码,以便在 XML 节点中使用。

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

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

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

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


推荐阅读