Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I am pulling html email content from a database. The html contains strings like :

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

that I would like to remove before displaying.

I'm using Coldfusion 9 and jSoup to parse the html. jSoup worked great removing <script> content that was in the html.

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

I just unclear on how to select <% with jSoup since it isn't a true "tag".

Thanks, Gary

share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

When you use jSoup to parse HTML which contains <%@ ... %> it gets converted to &lt;%@ ... %&gt; and is treated as text.

Since it is simple text, there's no way for jSoup to pick it up, or treat it any different to other text.

Assuming these markers are placeholders/tokens that follow simple rules (i.e. there's no nesting, they wont contain '%' outside of their markers, etc), you can remove them with a regex like this:

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

(You may or not want to then use jsoup.parse(emailHTML) to get the string back into an object again.)

Of course, if these placeholders are there for a reason, you may need to do something more complex than simply removing them - and if they might be including HTML then you need to consider if they should be processed before jSoup is invoked to remove script tags/etc.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["        <li><a href=\"http://area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"http://careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.3.7.1431\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </nosc"], "copyright__copyright__copyright": ["f course, if these placeholders are there for a reason, you may need to do something more complex than simply removing them - and if they might be including HTML then you need to consider if they should be processed before jSoup is invoked to remove script tags/etc.\n\nshare|improve this answer\nadd comment\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}