微信小程序 富文本转文本实例详解


Posted in Javascript onOctober 24, 2016

微信小程序-富文本转文本

最近小程序这么火,我也来搞搞。发现了一个恶心的问题。小程序没有组件能支持富文本内容的,改接口又不太合适,于是有了这问,没技术含量纯粹记录

首先我们看眼没有被格式的富文本显示:

*.wxml内代码。content是富文本内容

<view>
   <text>{{content}}</text>
  </view>

显示结果:

微信小程序 富文本转文本实例详解

由以上图片看到,小程序无法解析html文件

我们需要处理html富文本内容,让其显示好看点

下面直接上代码了,主要功能就是利用js的replace 对富文本经行处理,大家可以看一下。一起优化,方便对富文本更好的处理。

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;
}

将上面代码放入任意适合的小程序js文件中, 然后在需要处理数据的js文件里,引入文件,下面给出放入app.js文件中的调用示

例:

var app = getApp()//获取app小程序实例
 onLoad: function (options) {
    wx.request({
   url: 'http://example.com/api' + options.id+'.json',
   headers: {
    'Content-Type': 'application/json'
   },
   success: function (res) {
    res.data.content = app.convertHtmlToText(res.data.content )
     that.setData({
      art: res.data.content
     })
     console.log(res.data)
   }
  })
}

然后编译刷新下,可以看到结果了:

微信小程序 富文本转文本实例详解

这里可以继续调整下css,使显示得更好看点。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
原生javascript实现图片轮播效果代码
Sep 03 Javascript
jQuery中dom元素上绑定的事件详解
Apr 24 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
May 12 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
vue实现全选、反选功能
Nov 17 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 Javascript
微信小程序 参数传递详解
Oct 24 #Javascript
10分钟掌握XML、JSON及其解析
Dec 06 #Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 #Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 #Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
Oct 24 #Javascript
JavaScript reduce和reduceRight详解
Oct 24 #Javascript
js在ie下打开对话窗口的方法小结
Oct 24 #Javascript
You might like
php中的一个中文字符串截取函数
2007/02/14 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
用原生js做单页应用
2017/01/17 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Python获取文件所在目录和文件名的方法
2017/01/12 Python
关于Keras Dense层整理
2020/05/21 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
internal修饰符起什么作用
2013/12/16 面试题
中学教师教育感言
2014/02/21 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
2015高考寄语集锦
2015/02/27 职场文书
教研活动主持词
2015/07/03 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server