浅谈小程序开发的坑——富文本解析

        今天写着着代码,读取数据库的内容时突然跳出"<span>、<p>、&nbsp;"这些HTML标签、字符,吓一跳;本来如果是写HTML、JS倒也没什么,但是我在写小程序啊。瞬间就纳闷了,因为小程序里是没有HTML标签的。然后找后台同事能不能处理这个富文本问题,结果又被喷的一脸懵逼。废话少说,言归正传。

第一种方法:只能处理简单的HTML标签,img解释不了,连“&nbsp;”也处理不了,好处就只有一方法 代码少,无须引入文件

step1. 在 app.js 添加以下方法代码,作为公共方法,所有页面都可用

convertHtmlToText: function convertHtmlToText(inputText) {
    var returnText = "" + inputText;
    returnText = returnText.replace(/<\/div>/ig, '\r\n');
    returnText = returnText.replace(/<\/li>/ig, '\r\n');
    returnText = returnText.replace(/<li>/ig, '  *  ');
    returnText = returnText.replace(/<\/ul>/ig, '\r\n');
    //-- remove BR tags and replace them with line break
    returnText = returnText.replace(/<br\s*[\/]?>/gi, "\r\n");

    //-- remove P and A tags but preserve what's inside of them
    returnText = returnText.replace(/<p.*?>/gi, "\r\n");
    returnText = returnText.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 ($1)");

    //-- remove all inside SCRIPT and STYLE tags
    returnText = returnText.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
    returnText = returnText.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
    //-- remove all else
    returnText = returnText.replace(/<(?:.|\s)*?>/g, "");

    //-- get rid of more than 2 multiple line breaks:
    returnText = returnText.replace(/(?:(?:\r\n|\r|\n)\s*){2,}/gim, "\r\n\r\n");

    //-- get rid of more than 2 spaces:
    returnText = returnText.replace(/ +(?= )/g, '');

    //-- get rid of html-encoded characters:
    returnText = returnText.replace(/ /gi, " ");
    returnText = returnText.replace(/&/gi, "&");
    returnText = returnText.replace(/"/gi, '"');
    returnText = returnText.replace(/</gi, '<');
    returnText = returnText.replace(/>/gi, '>');

    return returnText;
  },

step2.  在要解释 js 文件里调用方法

var  app = getApp();
 
   onLoad:  function  (options){
     var  _this =  this ;
     //要处理的数据  _this.data.content   // j就是这一句代码就解释了HTML标签
     _this.data.content= app.convertHtmlToText(_this.data.content);
     
   }

第二种方法:解释能力非常强,要引入插件,大概480k左右

step1. 去github下载 wxParse插件地址(里面的教程更详细): https://github.com/icindy/wxParse

有点短啊哈哈哈
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值