java过滤html标签但是不过滤img标签中src属性值为特定路径的img标签

背景

近期做一个文章管理的模块,里面有个查询文章列表的接口,要求显示文章内容前300个字。由于文章内容可能包含多张图片,附件等。所以在数据库中文章内容存的是blob格式。前端是把文章的html格式传给后台,由后台整体存到blob中

如果用户在录入文章内容时,录入了前端编辑器【我们采用tinymce编辑器】提供的表情符号时,该编辑器也把表情符号转换成了 img标签。只不过src路径前部分是固定的。

要求

后台返回文章内容前300字是过滤了html标签的纯文字,比如<p> <a> <img>等标签替换成空了。但是表情符号不要过滤,前300字中如果有表情符号就显示表情符号,其他图片必须过滤。

解决办法

利用正则把文章内容的html标签替换成空,但是不能替换特定img表情符,然后剩余存文字取前300即可。

//content是文章内容的html
//static/tinymce4.7.5/plugins/img/01.gif  是表情符路径,所有表情符号前面路径都一样,
//只有名字不一样
//正则:(?!<(img|IMG) src=\"static/tinymce4.7.5/plugins/img/.*?/>)<.*?>
content = content.replaceAll("(?!<(img|IMG) src=\"static/tinymce4.7.5/plugins/img/.*?/>)<.*?>","");

//过滤tab符号、回车、换行html
content = content.replaceAll("\t|\n|\r","");

//双引号替换为“”
content = content.replaceAll("&ldquo;","\"");
content = content.replaceAll("&rdquo;","\"");

//空格去掉
content = content.replaceAll("&nbsp;","");

if(content.length()>300){
    content = content.substring(0,300);
}
System.out.printf("content=" + content);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路奔跑1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值