之前发布的文章提到过关于某自媒体平台(为了避免广告,就不说名字了)的文章发布接口的问题:发布文章之后,预期是直接发布好文章,但是这个平台对提交的富文本进行了处理,遇到第一个转义字符后,就把后面的文章全部切掉。本意是用接口让文章发布更方便,却带来了这个问题。
因为文章是在遇到代码的时候发生截断的,刚开始还以为是代码的问题,后来才发现是转义字符的问题。因为一个技术类文章避免不了有代码,而代码中的双引号、单引号、大于等于号等字符在经过js富文本编辑器进行处理后就变成了转义字符,最终获得的value值里面全部都变成了转义字符存储在数据库中。
解决这个问题的关键就是如何去掉转义字符,那么我们可以在存储到数据中的时候就用原来的字符替换掉转义字符,或者在传递给接口数据的时候,先从数据库中拿出来,处理了之后再传递给接口,这里编者采用了第一种方式,在从富文本框中存储到数据库的时候,就将转义字符替换掉。
这个方案可行性还是不错的,虽然在HTML中能够被转义字符有很多,但是常用的只有5个,而且写文章的时候一般用不到特殊字符。这5个字符分别是:"(双引号)、&、(大于号)、空格。解决的方法只需要用它们本来的字符替换掉即可。如下:
这里要注意空格的处理,用了一个span标签代替一个空格,设置span的左padding为2px即可占用一个空格。另外,注意第一行,代码中的单引号存储到数据库中的时候,要用两个单引号替换掉再存储到数据库,不然会因为单引号影响sql语句产生应用程序错误。
本文系小博客网站原创,转载请注明文章链接地址
领取专属 10元无门槛券
私享最新 技术干货