使用Jsoup过滤HTML标签,获取纯文本-阿里云开发者社区

开发者社区> 沉默王二> 正文

使用Jsoup过滤HTML标签,获取纯文本

简介: 使用Jsoup过滤HTML标签,获取纯文本
+关注继续查看

通常情况下,把HTML富文本内容保存到数据库字段时,会自带一些HTML标签,然后将这些内容再次显示到网页上时,就能够保持文本在富文本中编辑时的HTML格式。


这种做法毫无疑问是没有问题的,但有的时候,我们需要将HTML标签去掉,只取纯文本内容。这个时候,该怎么做呢?


比如说有这样一段简单的HTML富文本内容,带有p标签(它表示p标签内部的文本是一个段落),但有的时候,我们在显示该内容的缩略文本时,并不需要p标签,也就是说,只想显示“你好呀,沉默王二,请坚持写作!”


注:通常情况下,HTML文本内容要比只有p标签这个复杂!


<p>你好呀,沉默王二,请坚持写作!</p>

1

假如要你来实现这个需求,你能想到的解决办法是什么呢?


1)存入数据库时,既存入<p>你好呀,沉默王二,请坚持写作!</p>,也存入你好呀,沉默王二,请坚持写作!在取的时候按需索取。


2)存入数据库时,只存入<p>你好呀,沉默王二,请坚持写作!</p>,在显示的时候,如果需要p标签,就不过滤p标签;如果不需要p标签,就通过一定的方法过滤掉p标签。过滤的时机有三处,其一是从数据库取数据时通过SQL过滤(但这会增加数据库压力);其二是在服务器端向客户端返回数据时过滤掉HTML标签,再回传给客户端;其三是在view视图呈现时调用formatter进行过滤,我认为这种方法也是最好的。


第一种方案的解决办法, 比如说使用UEditor,如下图。


image.png


使用UEditor富文本编辑器的话,可以直接通过UEditor提供的两个API将带有HTML标签的内容和没有HTML标签的纯文本内容获取到。


第二种方案的解决办法,通过SQL过滤的方法我暂时还不会,另外它不是最优的解决方案。


第二、第三的区别在于契机不同,但服务器端过滤HTML标签的方法其实是一样的。


首先告诉大家的解决方案是使用jsoup!


官网地址为:https://jsoup.org/


如果是传统项目的话,在「getting started」处下载jar包添加到项目构建路径下;

如果是Maven 构建项目的话,把一下内容粘贴到pom.xml 文件的依赖节点下。


<dependency>

 <!-- jsoup HTML parser library @ https://jsoup.org/ -->

 <groupId>org.jsoup</groupId>

 <artifactId>jsoup</artifactId>

 <version>1.11.2</version>

</dependency>


原HTML富文本内容和使用jsoup过滤后的结果如下图所示:


image.png


具体代码实现非常简单,只有一行代码:


System.out.println(Jsoup.parse(unsafe).text());

1

使用jsoup过滤的结果是100%的纯文本。而使用一般使用正则表达式去HTML的做法在一定情况并不能保证是绝对的纯文本。


public static String replaceHtml(String html) {

if (isBlank(html)){

 return "";

}

String regEx = "<.+?>";

Pattern p = Pattern.compile(regEx);

Matcher m = p.matcher(html);

String s = m.replaceAll("");

return s;

}


如果想使用formatter,请参照JSP标签库Taglib之自定义function篇,轻松实现日期格式化。


最近,有不少读者问我是怎么学习的,那我干脆就把我看过的一些优质书籍贡献出来:


计算机基础入门推荐:《程序是怎样跑起来的》、《网络是怎样连接的》、《计算机是怎样跑起来的的》


进一步认识计算机网络:《计算机网络:自顶向下》、《图解http》


数据结构+算法入门:《大话数据结构》、《阿哈算法》


算法进阶:《算法第四版》、《编程珠玑》


由于我是 Java 技术栈的,顺便推荐几本 Java 的书籍,从左到由的顺序看到


Java:《Java核心技术卷1》、《编程思想》、《深入理解Java虚拟机》、《effective Java》、《Java并发编程的艺术》


数据库:《mysql必知必会》、《MySQL技术内幕:InnoDB存储引擎》


就先介绍这么多,这些都是最基础最核心的,希望对那些不知道看什么书的同学有所帮助。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
6 0
ECS使用感受
阿里云服务器初体验
3 0
ECS初体验
esc简单的初体验
4 0
微服务架构 | *2.3 Spring Cloud 启动及加载配置文件源码分析(以 Nacos 为例)
Spring Cloud 要实现统一配置管理,需要解决两个问题:如何获取远程服务器配置和如何动态更新配置;在这之前,我们先要知道 Spring Cloud 什么时候给我们加载配置文件;
3 0
ECS使用有感
我是一名即将步入社会的大学生,随着网络法等相关专业知识的学习愈发强烈。查询资料时,常常会浏览到制作精美的个人站,因此产生了建设自己个人站的设想,但是由于业余时间少之甚少,同时听闻购买域名与服务器的价格不菲,因此计划一直未能实现
4 0
微服务架构 | *2.4 Nacos 获取配置与事件订阅机制的源码分析
为方便理解与表达,这里把 Nacos 控制台和 Nacos 注册中心称为 Nacos 服务器(就是 web 界面那个),我们编写的业务服务称为 Nacso 客户端; 由于篇幅有限,这里将源码分析分为上下两篇,其中上篇讲获取配置与事件订阅机制,下篇讲长轮询定时机制;
4 0
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
5 0
ECS使用体验
使用阿里云服务器搭建个人博客网站
4 0
轻松实现织梦网站数据迁移到新站点
众所周知,织梦已经开始收费了,这对国内版权意识增强应该不算坏事,但想要免费使用又不想惹麻烦的站长们就有点麻烦了。
3 0
冬季实战营第一期学习报告
1月17至22日,我有幸参加了阿里云组织的“冬季实战营第一期:从零到一上手玩转云服务器”抱着期待和学习的心情,我参与其中,经过训练,收益良多、颇有收获
5 0
+关注
沉默王二
微信搜索「沉默王二」,回复关键字「00」获取硬核计算机基础资料。
1084
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载