V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kukala
V2EX  ›  程序员

遇到个好笑的事

  •  
  •   kukala · 65 天前 via Android · 5493 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小项目一般用富文本编辑器把内容存入数据库不是带有着 html 标签的嘛!

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



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

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

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

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

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

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

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

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

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

    以上是不考虑性能的,如果需要考虑性能,一直性用 text ,比如搜索引擎,那么当然是加字段。根据场景和需求来,否则就是耍流氓。
    sanyuedev
        45
    sanyuedev  
       63 天前
    内部使用的(管理系统)存取原始信息,对外展示的 转义为 html 形式的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   983 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 19:25 · PVG 03:25 · LAX 12:25 · JFK 15:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.