Coldfusion 如何删除像<;%@这样的文本包含视图=“包含视图”;MirrorPage";%&燃气轮机;与jSoup

Coldfusion 如何删除像<;%@这样的文本包含视图=“包含视图”;MirrorPage";%&燃气轮机;与jSoup,coldfusion,jsoup,coldfusion-9,cfml,Coldfusion,Jsoup,Coldfusion 9,Cfml,我正在从数据库中提取html电子邮件内容。html包含如下字符串: <%@ include view="MirrorPage" %> and <%= stagingArea.techField.label %> 和 我想在显示之前删除的 我使用Coldfusion 9和jSoup来解析html。jSoup在删除html中的内容方面做得非常好 <cfset emailHTML=jsoup.parse(detail["html"]) /> <cfset

我正在从数据库中提取html电子邮件内容。html包含如下字符串:

<%@ include view="MirrorPage" %> and <%= stagingArea.techField.label %>
我想在显示之前删除的

我使用Coldfusion 9和jSoup来解析html。jSoup在删除html中的内容方面做得非常好

<cfset emailHTML=jsoup.parse(detail["html"]) />
<cfset emailHTML.select("script").remove() />


我只是不清楚在使用jSoup解析包含
的HTML时如何选择,它会转换为
%@…%并被视为文本

因为它是简单的文本,所以jSoup无法提取它,也无法将它与其他文本区别对待

假设这些标记是遵循简单规则的占位符/标记(即没有嵌套,它们不会在标记之外包含“%”,等等),您可以使用如下正则表达式删除它们:

<cfset emailHTML = rereplace( emailHTML.html() ,'&lt;%[@=][^%]+%&gt;','','all') />

(然后,您可能不想使用
jsoup.parse(emailHTML)
将字符串重新获取到对象中。)


当然,如果这些占位符是有原因的,那么您可能需要做比简单移除它们更复杂的事情——如果它们可能包含HTML,那么您需要考虑在JToCH被调用以移除脚本标签等之前是否应该处理它们。我认为正则表达式是移除这些字符串的更好工具。在电子邮件应用程序中,它们用于生成内容。我从数据库中提取html只是为了显示,这样它们就不需要了。有时候,关于regex最困难的事情是确定它是否是正确的工具。:)可能仍然值得替换为非空字符串(例如,

)-以防由于空td之类的原因导致显示差异-我想这取决于观众是谁。