小程序解释HTML富文本的两种办法

时间:2022-09-13 10:32:42

  今天写着着代码,读取数据库的内容时突然跳出"<span>、<p>、&nbsp;"这些HTML标签、字符,吓一跳;本来如果是写HTML、JS倒也没什么,但是我在写小程序啊。瞬间就纳闷了,因为小程序里是没有HTML标签的。然后找后台同事能不能处理这个富文本问题,结果又被喷的一脸懵逼。废话少说,言归正传。

第一种方法:只能处理简单的HTML标签,img解释不了,连“&nbsp;”也处理不了,好处就只有一方法 代码少,无须引入文件

step1. 在 app.js 添加以下方法代码,作为公共方法,所有页面都可用

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

step2.  在要解释 js 文件里调用方法

var app = getApp();

  onLoad: function (options){
var _this = this;
//要处理的数据 _this.data.content // j就是这一句代码就解释了HTML标签
_this.data.content= app.convertHtmlToText(_this.data.content); }

  以上就是第一种方法;如有不明之处请参考: http://www.jianshu.com/p/74a6cbc21b41

第二种方法:解释能力非常强,要引入插件,大概480k左右

step1. 去github下载 wxParse插件地址(里面的教程更详细): https://github.com/icindy/wxParse

 

小程序解释HTML富文本的两种办法的更多相关文章

  1. 小程序快速部署富文本插件wxParser

    为了解决html2wxml在ios下字体过大问题,又发现一个比较好用的富文本插件:wxParser. 目前 wxParser 支持对一般的富文本内容包括标题.字体大小.对齐和列表等进行解析.同时也支持 ...

  2. 微信小程序&sol;支付宝小程序 WxParse解析富文本(html)代码

    小程序本身并不太支持html代码,比如html的img.span.p这个时候改这么办呢?需要用到一个小插件WxParse来实现. 小程序高级交流群:336925436  微信小程序支持富文本编辑器代码 ...

  3. 支付宝小程序开发——rich-text富文本组件支持html代码

    前言: 与微信小程序不同,支付宝小程序的富文本组件并不能直接支持html代码,如: 如上,支付宝小程序的富文本组件只支持数组类型,html代码需要使用 mini-html-parser 转换,具体用法 ...

  4. 微信小程序 —— 微信小程序解析html富文本插件wxParse

    下载并把wxParse放到小程序的目录中 github下载地址:https://github.com/icindy/wxParse 一.基本使用方法 1. Copy文件夹wxParse,把wxPars ...

  5. 微信小程序云开发-数据查询的两种写法

    从数据中查询数据有两种方法: 一.js文件的写法 1.使用传统的get方法 2.使用ES6简洁写法,推荐使用此方法  二.wxml文件的代码 把请求的数据显示在页面上.

  6. 小程序 支持html富文本吗

    详见: https://www.jianshu.com/p/9b9b97b17393

  7. 微信小程序弹出可填写框两种方法

    方法一: html页面: < view class = "container" class = "zn-uploadimg" > < butt ...

  8. 微信小程序--跳转页面常用的两种方法

    一.bindtap="onProductsItemTap"绑定点击跳转事件 在.wxml文件中绑定 在.js文件中实现绑定事件函数 二.navigator标签配合URL跳转法 在w ...

  9. C&num; HttpClient设置cookies的两种办法 &lpar;转发&rpar;

    一般有两种办法 第一种handler.UseCookies=true(默认为true),默认的会自己带上cookies,例如 var handler = new HttpClientHandler() ...

随机推荐

  1. 5Hibernate入门----青软S2SH&lpar;笔记&rpar;

    这里有个问题,就是这本书第五章的示例代码中的hibernate的jar包有问题,各种找不到类,把lib下的包后换成第六章里的包就好了. 换成5.1的就好了,而且如果只是简单使用hibernate的话, ...

  2. 编译错误:&sol;usr&sol;bin&sol;ld&colon; cannot find -lz

    编译时出现错误/usr/bin/ld: cannot find -lz,安装zlib和zlib-devel yum install zlib yum install zlib-devel

  3. (转载)MongoingDB常用操作

    mongo –path db.AddUser(username,password)  添加用户 db.auth(usrename,password)     设置数据库连接验证 db.cloneDat ...

  4. Python初学的易犯错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  5. Aspose&period;Cells单元格转换为数字格式

    需要在两个地方设置 //Adding a numeric value to "A2" cell "; worksheet.Cells["A2"].Pu ...

  6. ServiceStack&period;Redis——Redis于&period;net向上client解

    ServiceStack.Redis--Redis于.net向上client解 源代码和使用: https://github.com/ServiceStack/ServiceStack.Redis 样 ...

  7. 关于vector push&lowbar;back&lpar;&rpar;与其他方式读取数据的效率对比

    引言: 在读取大量数据(数组)时,使用vector会尽量保证不会炸空间(MLE),但是相比于scanf的读取方式会慢上不少.但到底效率相差有多大,我们将通过对比测试得到结果. 测试数据:利用srand ...

  8. nodejs项目windows下开机自启动

    Nodejs项目开机自启动 1. 在需要自启动的项目中安装 node-windows 模块 npm install node-windows --save 2. 在项目根目录创建nw.js文件 代码截 ...

  9. 动态输出html一些效果失效的处理

    利用AJAX动态加载页面,实现无刷新加载,有时会出现一些问题.比如说,在一些jquery控件中,是利用在页面加载的时候,对一些带有特殊属性的元素进行处理,比如事件绑定什么的.假如是动态加载,此时页面早 ...

  10. YTU 1003&colon; Redraiment的遭遇

    1003: Redraiment的遭遇 时间限制: 1000 Sec  内存限制: 128 MB 提交: 198  解决: 71 题目描述 Redraiment的老家住在工业区,日耗电量非常大.是* ...