小项目一般用富文本编辑器把内容存入数据库不是带有着 html 标签的嘛!

需求是提取出来的内容不带 html 标签的!

请问大家会选择如下哪个操作:

1 、建立 2 个字段,一个存带 html 标签的内容,一个存不带 html 的内容

2 、取出数据然后替换掉 html 标签

这时候 php 的好处就出来了 直接一个 strip_tags 函数搞定。

我肯定是选 2 ,这个就是一个业务上的需求吧。今儿不要标签,明儿要标签,后天想把标签加粗展示,大后天想把标签变为红色,总不能一次整多一个字段吧

大部分富文本编辑器都有两个保存 API ,一个存 HTML 格式的,一个存文本格式的,并且两者可以互转

文本格式也只是类似 markdown 去掉部分 HTML 标签,不能全部去掉。比如允许编辑字体颜色,保存时如果把 HTML 标签全部去了,那你就转不回来了

2 ,jsoup 解析整一下

这要从何笑起呢

你会选哪个

2

你再仔细看下题

是的

的确

哦,你的意思是,在有 HTML 版本的同时要不要另外存一个文字版本是吧,那我选 2

选 1 ,我懒

对头,是这样的

这是懒的问题吗?

那你有没有想过,在某些应用情景下,单独存一个不带 html 标签的纯文本,会更方便搜索呢?

选 1 直接存储 更通用

全文搜索用 solar 这些,也不需要你在数据库里存,要存分词的结果

选 1 ,这事我干过。
我之前采集过 aardio 论坛的帖子,aardio 的数据类型有一个是 table 类型,那存 html 不方便搜索 aardio 代码,所以就用了两个字段,一个存 html 源码,一个存纯文本。

嘿嘿

这个应用场景下,你有实践过没

存储的时候就已经处理了,不是多此一举吗

只是选了个方便你的方法,并不是最优选择

正常搜索引擎有去 html 过滤。这不是问题。

额 哪里好笑了?

我是来看笑话的,笑话呢

选 2 丢给前端去替换?

首先考虑的问题是,不带 html 的内容是不是必须存,评判标准是:有没有根据它检索的需求。如果是必须存那就没 2 的什么事了。如果不是必须存,那 1 跟 2 在黑盒功能上是没区别的,用哪个就看你用哪个更方便。

哪里好笑了, 正常一点的富文本都是存自己的 rawObject ,从没存过 HTML , 这个需求要是要求存 HTML 才有毛病。

2
第一个是用空间换时间
第二个是直接花时间去替换,如果不是很大的文本,其实效率也是挺快的

  1. 哪里好笑了
  2. “小项目一般用富文本编辑器把内容存入数据库不是带有着 html 标签的嘛!” 这是什么逻辑

显然 2 个方案都不对,实际只要保存带标签的 html 。因为不需要标签时你可以把带标签内容取出来去掉标签。但你去掉了标签保存就恢复不了原来的标签了,除非你的标签是固定的。

2 ,除非需求方同意把富文本编辑器改成纯文本编辑器

反正我没笑

这有什么可笑的?

一般选 1 ,省心

自己定义一套不更好?

小项目,之前我们用了 1 ,因为内容需要按关键字搜索

有什么好笑的,之前做 APP 消息中心的时候就是这么处理的显示部分简介和详情的。

简介就是纯文本,详情就是 webview 展示详细内容

看数据量 和 时间要求了。。
第一个 空间换时间
第二个 时间换空间呗。。。

还是出现了,为了防杠,特别说了,某些应用场景。还分词,轻量情况下,犯得着另外上复杂的东西么?瞧把你能耐的,本来 5 块钱的 VPS 就能解决的,给你搞得非要花 500 块,你这样的 IT 很 JS 啊……

n 年前实践过,许多论坛和 CMS 系统都会同时存两个版本,便于搜索,这么玩还是从国外那些系统传到国内的。

除了搜索需要,再举例一个,类似上面提到的消息通知,包括 Email ,都存在同时需要富文本和纯文本的需求。

为什么会存带 html 标签的, 我这里的富文本是存的楼上说的 rawObject, 也有过前端展示简介纯文本的需求, 是服务端这边提取的文本. 如果还要搜索, 确实还是 ls 说的再加一个字段存纯文本比较好.

得看需求上,要求带样式的内容在“不带 html 标签”的场景下怎么处理,如果只去掉 html 标签就能满足需求的话,我倾向方案 2 。

方案 1 需要确保一致性,解决一致性问题通常会麻烦一些,我个人的偏好是能存一份数据尽量不存多份。