Java过滤HTML标签,获取纯文本

来源:互联网 发布:mac 弱网络工具 编辑:程序博客网 时间:2024/05/16 07:42

有这样一个需求:

要将富文本内容保存到MySQL数据的一个字段中,比如保存的内容是:

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

然后需要从该内容中做模糊查询,比如条件是p。

如果对<p>你好呀,沉默王二,坚持写作吧!</p>字段内容不做任何处理,就直接like ‘%p%’查询的话,是有结果的。

但其实不应该有结果,因为真正的内容只是“你好呀,沉默王二,坚持写作吧!”,是没有p的。

你能想到的解决办法是什么呢?

1)存两个结果,<p>你好呀,沉默王二,坚持写作吧!</p>用来展示,“你好呀,沉默王二,坚持写作吧!”用来做查询。

2)存一个结果,查询的时候通过MySQL的存储过程+正则表达式将<p>你好呀,沉默王二,坚持写作吧!</p>中的HTML标签(p)过滤掉。

3)存一个结果,利用Java过滤掉<p>你好呀,沉默王二,坚持写作吧!</p>中的HTML标签(p),然后再通过Java做模糊查询。

第二种结果我认为最好,但是我还不会。

于是我先调查了第一种方案,有两种做法:

1)使用UEditor。

这里写图片描述

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

2)Jsoup

这里写图片描述

将带有HTML标签的内容通过jsoup转换掉,将获取到的纯文本内容存储。

这里写图片描述

具体代码实现如下:

        Whitelist addTags = new Whitelist();        String safe = Jsoup.clean(unsafe, addTags);        System.out.println(safe);        System.out.println(Jsoup.parse(unsafe).text());

原创不易,快来关注:

沉默王二