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


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实现可拖动的浮动层完整代码
May 27 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
three.js搭建室内场景教程
Dec 30 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
微信小程序之左右布局的实现代码
Dec 13 Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php实现微信支付之现金红包
2018/05/30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
遗传算法之Python实现代码
2017/10/10 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
Yahoo的PHP面试题
2014/05/26 面试题
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
医学生自我鉴定范文
2013/11/08 职场文书
医大实习自我鉴定
2013/12/07 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
会计毕业生自荐书
2014/06/12 职场文书
庆七一宣传标语
2014/10/08 职场文书
水电工岗位职责
2015/02/14 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书