textarea输入的内容保存到数据库,用div显示

项目中遇到需求,要求用户个人简介在前端无刷新编辑并保留换行。通过编辑div并保存html到数据库实现,但使用dotdotdot.js插件截取内容时出现问题。为解决换行和安全问题,改用textarea编辑,然后通过htmlspecialchars处理特殊字符,存入数据库。在显示时使用nl2br将换行恢复,确保内容正确显示且防止脚本注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:在近期的项目中,有这样一个需求:用户的个人简介,前台无刷新编辑。那么这个问题是不难的,实现方式:

1.可编辑的div

2.ajax请求保存div中输入的内容

到这里我相信很多朋友都是一目了然,这并不是很难的啊,

但是问题来了,项目需求,用户在填写个人简介的时候,输入的换行也要相应的保存起来,于是宝宝查看了下可编辑的div输入换行之后是什么格式,

宝宝发现,当你按一次回车,输入内容之后,html会自动给你生成一个div,那么你按了回车之后输入的内容都会放到这块div中,这个时候宝宝是很开心的,

妈蛋啊,直接保存可编辑div的html到数据库,显示的时候不加任何处理,直接显示html,该有的换行都有,原来什么样子就是什么样子啊(这样保存html的方式还可以避免脚本注入的问题)。

那么到了这里,我觉得很多人都会认为,这个问题已经解决了,但是万万没想到,故事一波三折,个人简介允许1000字符,超过三行需要截取三行,然后用“...查看全部”代替,这个时候,项目组使用了一个吊死级别的插件,dotdotdot.js插件,这个插件差点要了宝宝半条名,(我要吐槽一下:真的是他妈的八字的插件啊),以往不专业的截取字符串,都会用subString等函数截取,但是事实上是不合理的,(窗口缩小等情况会出现问题),而这款插件(或者类似插件)都是根据div的高度截取,你需要三行(如果三行高度是84px),那么他会给你截取高度是84px,超出部分隐藏,宝宝不明白它内在的截取方式,总之出现了很多问题。


后来项目组的某些老人,想不出法子,便让宝宝用textarea代替可编辑div用来编辑,编辑完成依然用div显示。

OK

这篇文章的重点来了:

textarea内容保存到数据库,然后从数据库取出来用div显示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值