从字符串中删除HTML标记

从字符串中删除HTML标记

是否有从Java字符串中删除HTML的好方法?简单的正则表达式

 replaceAll("\\<.*?>","")

会起作用的,但是像这样的事情&amp;不能正确转换,两个尖括号之间的非HTML将被移除(即.*?在regex将会消失)。


www说
浏览 744回答 4
4回答

噜噜哒

使用HTML解析器而不是regex。这很简单珍汤.public&nbsp;static&nbsp;String&nbsp;html2text(String&nbsp;html)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Jsoup.parse(html).text();}珍汤支座在可自定义的白名单上删除HTML标记,如果只允许使用HTML标记,则非常有用。<b>,&nbsp;<i>和<u>.另见:RegEx匹配打开的标记(XHTML自带标记除外)。领先的Java HTML解析器的优缺点是什么?JSP/Servlet Web应用程序中的XSS预防

SMILET

如果你是为了安卓你能做到的.。android.text.Html.fromHtml(instruction).toString()

白猪掌柜的

如果用户输入<b>hey!</b>,您想要显示吗?<b>hey!</b>或hey!?如果第一种方法是转义较少的符号和html-编码符号(还有可选的引号),那么您就没事了。对代码进行修改以实现第二个选项是:replaceAll("\\<[^>]*>","")但是,如果用户输入格式错误的内容,则会遇到问题,例如<bhey!</b>.你也可以退房吉蒂这将解析“脏”html输入,并为您提供删除标记的方法,保留文本。试图删除html的问题是,浏览器有非常宽松的解析器,比您可以找到的任何库Will都要宽松,所以即使您尽最大努力去除所有标记(使用上面的替换方法、DOM库或JTidy),您也会这样做。仍然需要确保编码任何剩余的HTML特殊字符,以确保您的输出安全。
打开App,查看更多内容
随时随地看视频慕课网APP