小程序解釋HTML富文本的兩種辦法


  今天寫着着代碼,讀取數據庫的內容時突然跳出"<span>、<p>、&nbsp;"這些HTML標簽、字符,嚇一跳;本來如果是寫HTML、JS倒也沒什么,但是我在寫小程序啊。瞬間就納悶了,因為小程序里是沒有HTML標簽的。然后找后台同事能不能處理這個富文本問題,結果又被噴的一臉懵逼。廢話少說,言歸正傳。

第一種方法:只能處理簡單的HTML標簽,img解釋不了,連“&nbsp;”也處理不了,好處就只有一方法 代碼少,無須引入文件

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM