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


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 相关文章推荐
JS实现模仿微博发布效果实例代码
Dec 16 Javascript
jQuery.position()方法获取不到值的安全替换方法
Mar 13 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
AngularJS中处理多个promise的方式
Feb 02 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 Javascript
vue 使用ref 让父组件调用子组件的方法
Feb 08 Javascript
vue todo-list组件发布到npm上的方法
Apr 04 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
JS创建自定义对象的六种方法总结
Dec 15 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
德劲1107的电路分析与打磨
2021/03/02 无线电
深入php var_dump()函数的详解
2013/06/05 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
纯php生成随机密码
2015/10/30 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
web.py中调用文件夹内模板的方法
2014/08/26 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
python 如何上传包到pypi
2020/12/24 Python
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
预备党员党校学习自我评价分享
2013/11/12 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
趣味运动会加油词
2015/07/18 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书