1

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

<%@ include view="MirrorPage" %> and <%= stagingArea.techField.label %>

我想在显示之前删除。

我正在使用 Coldfusion 9 和 jSoup 来解析 html。jSoup 很好地删除了 html 中的 <script> 内容。

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

我只是不清楚如何使用 jSoup 选择 <%,因为它不是真正的“标签”。

谢谢,加里

4

1 回答 1

2

当您使用 jSoup 解析包含<%@ ... %>它的 HTML 时,它会被转换&lt;%@ ... %&gt;为文本并被视为文本。

由于它是简单的文本,jSoup 无法将其拾取,或将其与其他文本区别对待。

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

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

(您可能希望或不希望使用jsoup.parse(emailHTML)该字符串再次将字符串重新放入对象中。)

当然,如果这些占位符的存在是有原因的,您可能需要做一些比简单地删除它们更复杂的事情 - 如果它们可能包含 HTML,那么您需要考虑是否应该在调用 jSoup 以删除脚本标签之前处理它们/ETC。

于 2013-03-04T13:02:14.500 回答