• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kukala
V2EX  ›  程序员

遇到个好笑的事

  •  
  •   kukala · Aug 1, 2022 via Android · 7834 views
    This topic created in 1555 days ago, the information mentioned may be changed or developed.
    小项目一般用富文本编辑器把内容存入数据库不是带有着 html 标签的嘛!

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



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

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

    2 、取出数据然后替换掉 html 标签
    45 replies  •  2022-08-03 23:25:41 +08:00
    kingjpa
    kingjpa
    Aug 1, 2022❤️3
    1
    这时候 php 的好处就出来了 直接一个 strip_tags 函数搞定。
    J55s5
    J55s5
    Aug 1, 2022
    2
    我肯定是选 2 ,这个就是一个业务上的需求吧。今儿不要标签,明儿要标签,后天想把标签加粗展示,大后天想把标签变为红色,总不能一次整多一个字段吧
    eason1874
    eason1874
    Aug 1, 2022
    3
    大部分富文本编辑器都有两个保存 API ,一个存 HTML 格式的,一个存文本格式的,并且两者可以互转

    文本格式也只是类似 markdown 去掉部分 HTML 标签,不能全部去掉。比如允许编辑字体颜色,保存时如果把 HTML 标签全部去了,那你就转不回来了
    itechify
    itechify
    Aug 1, 2022 via Android
    4
    2 ,jsoup 解析整一下
    BugCry
    BugCry
    Aug 1, 2022 via Android❤️12
    5
    这要从何笑起呢
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    6
    @BugCry 你会选哪个
    kkeep
    kkeep
    Aug 1, 2022 via Android
    7
    2
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    8
    @eason1874 你再仔细看下题
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    9
    @oneisall8955 是的
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    10
    @kingjpa 的确
    eason1874
    eason1874
    Aug 1, 2022
    11
    @kukala 哦,你的意思是,在有 HTML 版本的同时要不要另外存一个文字版本是吧,那我选 2
    Danswerme
    Danswerme
    Aug 1, 2022
    12
    选 1 ,我懒
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    13
    @eason1874 对头,是这样的
    kukala
    kukala
    OP
    Aug 1, 2022 via Android
    14
    @Danswerme 这是懒的问题吗?
    DeutschXP
    DeutschXP
    Aug 2, 2022 via iPhone
    15
    @kukala 那你有没有想过,在某些应用情景下,单独存一个不带 html 标签的纯文本,会更方便搜索呢?
    netnr
    netnr
    Aug 2, 2022 via Android
    16
    选 1 直接存储 更通用
    murmur
    murmur
    Aug 2, 2022
    17
    @DeutschXP 全文搜索用 solar 这些,也不需要你在数据库里存,要存分词的结果
    imicksoft
    imicksoft
    Aug 2, 2022
    18
    选 1 ,这事我干过。
    我之前采集过 aardio 论坛的帖子,aardio 的数据类型有一个是 table 类型,那存 html 不方便搜索 aardio 代码,所以就用了两个字段,一个存 html 源码,一个存纯文本。
    yuewenjie
    yuewenjie
    Aug 2, 2022
    19
    嘿嘿
    kukala
    kukala
    OP
    Aug 2, 2022 via Android
    20
    @DeutschXP 这个应用场景下,你有实践过没
    kukala
    kukala
    OP
    Aug 2, 2022 via Android
    21
    @netnr 存储的时候就已经处理了,不是多此一举吗
    kukala
    kukala
    OP
    Aug 2, 2022 via Android
    22
    @imicksoft 只是选了个方便你的方法,并不是最优选择
    fengci
    fengci
    Aug 2, 2022
    23
    @DeutschXP 正常搜索引擎有去 html 过滤。这不是问题。
    hay0577
    hay0577
    Aug 2, 2022
    24
    额 哪里好笑了?
    JaminT
    JaminT
    Aug 2, 2022
    25
    我是来看笑话的,笑话呢
    p8YFk4f3E8SJ3aEv
    p8YFk4f3E8SJ3aEv
    Aug 2, 2022
    26
    选 2 丢给前端去替换?
    nothingistrue
    nothingistrue
    Aug 2, 2022
    27
    首先考虑的问题是,不带 html 的内容是不是必须存,评判标准是:有没有根据它检索的需求。如果是必须存那就没 2 的什么事了。如果不是必须存,那 1 跟 2 在黑盒功能上是没区别的,用哪个就看你用哪个更方便。
    ada87
    ada87
    Aug 2, 2022
    28
    哪里好笑了, 正常一点的富文本都是存自己的 rawObject ,从没存过 HTML , 这个需求要是要求存 HTML 才有毛病。
    theliang
    theliang
    Aug 2, 2022
    29
    2
    第一个是用空间换时间
    第二个是直接花时间去替换,如果不是很大的文本,其实效率也是挺快的
    littlewing
    littlewing
    Aug 2, 2022
    30
    1. 哪里好笑了
    2. “小项目一般用富文本编辑器把内容存入数据库不是带有着 html 标签的嘛!” 这是什么逻辑
    RuralHunter
    RuralHunter
    Aug 2, 2022
    31
    显然 2 个方案都不对,实际只要保存带标签的 html 。因为不需要标签时你可以把带标签内容取出来去掉标签。但你去掉了标签保存就恢复不了原来的标签了,除非你的标签是固定的。
    BugCry
    BugCry
    Aug 2, 2022 via Android
    32
    @kukala 2 ,除非需求方同意把富文本编辑器改成纯文本编辑器
    octalempyrean
    octalempyrean
    Aug 2, 2022 via Android❤️1
    33
    反正我没笑
    laolaowang
    laolaowang
    Aug 2, 2022
    34
    这有什么可笑的?
    fox0001
    fox0001
    Aug 2, 2022 via Android
    35
    一般选 1 ,省心
    Rrrrrr
    Rrrrrr
    Aug 2, 2022
    36
    自己定义一套不更好?
    alfa
    alfa
    Aug 2, 2022
    37
    小项目,之前我们用了 1 ,因为内容需要按关键字搜索
    ccyu220
    ccyu220
    Aug 2, 2022
    38
    有什么好笑的,之前做 APP 消息中心的时候就是这么处理的显示部分简介和详情的。

    简介就是纯文本,详情就是 webview 展示详细内容
    mosliu
    mosliu
    Aug 2, 2022
    39
    看数据量 和 时间要求了。。
    第一个 空间换时间
    第二个 时间换空间呗。。。
    DeutschXP
    DeutschXP
    Aug 2, 2022 via iPhone
    40
    @murmur 还是出现了,为了防杠,特别说了,某些应用场景。还分词,轻量情况下,犯得着另外上复杂的东西么?瞧把你能耐的,本来 5 块钱的 VPS 就能解决的,给你搞得非要花 500 块,你这样的 IT 很 JS 啊……

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

    除了搜索需要,再举例一个,类似上面提到的消息通知,包括 Email ,都存在同时需要富文本和纯文本的需求。
    lujiaosama
    lujiaosama
    Aug 2, 2022
    41
    为什么会存带 html 标签的, 我这里的富文本是存的楼上说的 rawObject, 也有过前端展示简介纯文本的需求, 是服务端这边提取的文本. 如果还要搜索, 确实还是 ls 说的再加一个字段存纯文本比较好.
    libook
    libook
    Aug 2, 2022
    42
    得看需求上,要求带样式的内容在“不带 html 标签”的场景下怎么处理,如果只去掉 html 标签就能满足需求的话,我倾向方案 2 。

    方案 1 需要确保一致性,解决一致性问题通常会麻烦一些,我个人的偏好是能存一份数据尽量不存多份。
    krixaar
    krixaar
    Aug 3, 2022
    43
    方案 1 的变种,建一个视图,多一个字段用原表字段去掉 html 标签
    encro
    encro
    Aug 3, 2022
    44
    orm 里面这种不是有接近标准的解决方案吗?

    Post {
    html, # 数据库存原始的
    getContent(), # 定义一个 get 取去掉 tag 的
    }

    以上是不考虑性能的,如果需要考虑性能,一直性用 text ,比如搜索引擎,那么当然是加字段。根据场景和需求来,否则就是耍流氓。
    sanyuedev
    sanyuedev
    Aug 3, 2022
    45
    内部使用的(管理系统)存取原始信息,对外展示的 转义为 html 形式的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2996 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 134ms · UTC 12:08 · PVG 20:08 · LAX 04:08 · JFK 07:08
    ♥ Do have faith in what you're doing.