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


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技巧
Dec 06 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
JS中递归函数
Jun 17 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
详解a++和++a的区别
Aug 30 Javascript
vue组件(全局,局部,动态加载组件)
Sep 02 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 Javascript
Angular4.0动画操作实例详解
May 10 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的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
js实现自定义路由
2017/02/04 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
python实现bitmap数据结构详解
2014/02/17 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Python使用Pygame绘制时钟
2020/11/29 Python
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
护士自我鉴定范文
2013/10/06 职场文书
大学生村官任职感言
2014/01/09 职场文书
给交警的表扬信
2014/01/12 职场文书
赡养老人协议书
2014/04/21 职场文书
孩子教育的心得体会
2014/09/01 职场文书
端午节寄语2015
2015/03/23 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript