今天写着着代码,读取数据库的内容时突然跳出"<span>、<p>、 "这些HTML标签、字符,吓一跳;本来如果是写HTML、JS倒也没什么,但是我在写小程序啊。瞬间就纳闷了,因为小程序里是没有HTML标签的。然后找后台同事能不能处理这个富文本问题,结果又被喷的一脸懵逼。废话少说,言归正传。
第一种方法:只能处理简单的HTML标签,img解释不了,连“ ;”也处理不了,好处就只有一方法 代码少,无须引入文件。
step1. 在 app.js 添加以下方法代码,作为公共方法,所有页面都可用
1 convertHtmlToText: function convertHtmlToText(inputText) { 2 var returnText = "" + inputText; 3 returnText = returnText.replace(/<\/div>/ig, \'\r\n\'); 4 returnText = returnText.replace(/<\/li>/ig, \'\r\n\'); 5 returnText = returnText.replace(/<li>/ig, \' * \'); 6 returnText = returnText.replace(/<\/ul>/ig, \'\r\n\'); 7 //-- remove BR tags and replace them with line break 8 returnText = returnText.replace(/<br\s*[\/]?>/gi, "\r\n"); 9 10 //-- remove P and A tags but preserve what\'s inside of them 11 returnText = returnText.replace(/<p.*?>/gi, "\r\n"); 12 returnText = returnText.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 ($1)"); 13 14 //-- remove all inside SCRIPT and STYLE tags 15 returnText = returnText.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); 16 returnText = returnText.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); 17 //-- remove all else 18 returnText = returnText.replace(/<(?:.|\s)*?>/g, ""); 19 20 //-- get rid of more than 2 multiple line breaks: 21 returnText = returnText.replace(/(?:(?:\r\n|\r|\n)\s*){2,}/gim, "\r\n\r\n"); 22 23 //-- get rid of more than 2 spaces: 24 returnText = returnText.replace(/ +(?= )/g, \'\'); 25 26 //-- get rid of html-encoded characters: 27 returnText = returnText.replace(/ /gi, " "); 28 returnText = returnText.replace(/&/gi, "&"); 29 returnText = returnText.replace(/"/gi, \'"\'); 30 returnText = returnText.replace(/</gi, \'<\'); 31 returnText = returnText.replace(/>/gi, \'>\'); 32 33 return returnText; 34 },
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