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


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 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
Dec 20 Javascript
ExtJS 下拉多选框lovcombo
May 19 Javascript
基于jquery点击自以外任意处,关闭自身的代码
Feb 10 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 Javascript
Html5生成验证码的示例代码
May 10 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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基础知识回顾
2012/08/16 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
smarty模板数学运算示例
2016/12/11 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python 基础之字符串string详解及实例
2017/04/01 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
python实现取余操作的简单实例
2020/08/16 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
电子专业推荐信范文
2013/11/18 职场文书
学历公证书范本
2014/04/09 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
社会学专业求职信
2014/07/17 职场文书
继承权公证书范本
2015/01/23 职场文书
老公出轨后的保证书
2015/05/08 职场文书
中学团支部工作总结
2015/08/13 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
python模板入门教程之flask Jinja
2022/04/11 Python