问题
在大部分html或者其它富文本在保存到后台中,为了安全起见需要将一些特殊字符进行转义
但是,请求回来的信息中包涵着这些转义过后的字符,而微信小程序是不能够直接进行反转义成为html特殊字符,所以需要将字符串特殊字符替换后才能恢复
作用
用于转义html中的特殊字符
解析类型
HTML 支持的数学符号
HTML 支持的希腊字母
HTML 支持的其他实体
代码
在完善微信小程序富文本解析wxParse Alpha0.1-支持HTML及markdown解析过程中遇到这样的问题,先直接贴出代码,稍后考虑另外建立仓库
代码很简单,复制粘贴太难,所以提供给大家以便使用,欢迎补充修改
代码链接:https://github.com/icindy/wxParse/blob/master/wxParse/wxDiscode.js
// HTML 支持的数学符号 function strNumDiscode(str){ str = str.replace(/∀/g, '∀'); str = str.replace(/∂/g, '∂'); str = str.replace(/&exists;/g, '∃'); str = str.replace(/∅/g, '∅'); str = str.replace(/∇/g, '∇'); str = str.replace(/∈/g, '∈'); str = str.replace(/∉/g, '∉'); str = str.replace(/∋/g, '∋'); str = str.replace(/∏/g, '∏'); str = str.replace(/∑/g, '∑'); str = str.replace(/−/g, '−'); str = str.replace(/∗/g, '∗'); str = str.replace(/√/g, '√'); str = str.replace(/∝/g, '∝'); str = str.replace(/∞/g, '∞'); str = str.replace(/∠/g, '∠'); str = str.replace(/∧/g, '∧'); str = str.replace(/∨/g, '∨'); str = str.replace(/∩/g, '∩'); str = str.replace(/∩/g, '∪'); str = str.replace(/∫/g, '∫'); str = str.replace(/∴/g, '∴'); str = str.replace(/∼/g, '∼'); str = str.replace(/≅/g, '≅'); str = str.replace(/≈/g, '≈'); str = str.replace(/≠/g, '≠'); str = str.replace(/≤/g, '≤'); str = str.replace(/≥/g, '≥'); str = str.replace(/⊂/g, '⊂'); str = str.replace(/⊃/g, '⊃'); str = str.replace(/⊄/g, '⊄'); str = str.replace(/⊆/g, '⊆'); str = str.replace(/⊇/g, '⊇'); str = str.replace(/⊕/g, '⊕'); str = str.replace(/⊗/g, '⊗'); str = str.replace(/⊥/g, '⊥'); str = str.replace(/⋅/g, '⋅'); return str; } //HTML 支持的希腊字母 function strGreeceDiscode(str){ str = str.replace(/Α/g, 'Α'); str = str.replace(/Β/g, 'Β'); str = str.replace(/Γ/g, 'Γ'); str = str.replace(/Δ/g, 'Δ'); str = str.replace(/Ε/g, 'Ε'); str = str.replace(/Ζ/g, 'Ζ'); str = str.replace(/Η/g, 'Η'); str = str.replace(/Θ/g, 'Θ'); str = str.replace(/Ι/g, 'Ι'); str = str.replace(/Κ/g, 'Κ'); str = str.replace(/Λ/g, 'Λ'); str = str.replace(/Μ/g, 'Μ'); str = str.replace(/Ν/g, 'Ν'); str = str.replace(/Ξ/g, 'Ν'); str = str.replace(/Ο/g, 'Ο'); str = str.replace(/Π/g, 'Π'); str = str.replace(/Ρ/g, 'Ρ'); str = str.replace(/Σ/g, 'Σ'); str = str.replace(/Τ/g, 'Τ'); str = str.replace(/Υ/g, 'Υ'); str = str.replace(/Φ/g, 'Φ'); str = str.replace(/Χ/g, 'Χ'); str = str.replace(/Ψ/g, 'Ψ'); str = str.replace(/Ω/g, 'Ω'); str = str.replace(/α/g, 'α'); str = str.replace(/β/g, 'β'); str = str.replace(/γ/g, 'γ'); str = str.replace(/δ/g, 'δ'); str = str.replace(/ε/g, 'ε'); str = str.replace(/ζ/g, 'ζ'); str = str.replace(/η/g, 'η'); str = str.replace(/θ/g, 'θ'); str = str.replace(/ι/g, 'ι'); str = str.replace(/κ/g, 'κ'); str = str.replace(/λ/g, 'λ'); str = str.replace(/μ/g, 'μ'); str = str.replace(/ν/g, 'ν'); str = str.replace(/ξ/g, 'ξ'); str = str.replace(/ο/g, 'ο'); str = str.replace(/π/g, 'π'); str = str.replace(/ρ/g, 'ρ'); str = str.replace(/ς/g, 'ς'); str = str.replace(/σ/g, 'σ'); str = str.replace(/τ/g, 'τ'); str = str.replace(/υ/g, 'υ'); str = str.replace(/φ/g, 'φ'); str = str.replace(/χ/g, 'χ'); str = str.replace(/ψ/g, 'ψ'); str = str.replace(/ω/g, 'ω'); str = str.replace(/ϑ/g, 'ϑ'); str = str.replace(/ϒ/g, 'ϒ'); str = str.replace(/ϖ/g, 'ϖ'); str = str.replace(/·/g, '·'); return str; } // function strcharacterDiscode(str){ // 加入常用解析 str = str.replace(/ /g, ' '); str = str.replace(/"/g, "'"); str = str.replace(/&/g, '&'); // str = str.replace(/</g, '‹'); // str = str.replace(/>/g, '›'); str = str.replace(/</g, ''); str = str.replace(/•/g, '•'); return str; } // HTML 支持的其他实体 function strOtherDiscode(str){ str = str.replace(/Œ/g, 'Œ'); str = str.replace(/œ/g, 'œ'); str = str.replace(/Š/g, 'Š'); str = str.replace(/š/g, 'š'); str = str.replace(/Ÿ/g, 'Ÿ'); str = str.replace(/ƒ/g, 'ƒ'); str = str.replace(/ˆ/g, 'ˆ'); str = str.replace(/˜/g, '˜'); str = str.replace(/ /g, ''); str = str.replace(/ /g, ''); str = str.replace(/ /g, ''); str = str.replace(/‌/g, ''); str = str.replace(/‍/g, ''); str = str.replace(/‎/g, ''); str = str.replace(/‏/g, ''); str = str.replace(/–/g, '–'); str = str.replace(/—/g, '—'); str = str.replace(/‘/g, '‘'); str = str.replace(/’/g, '’'); str = str.replace(/‚/g, '‚'); str = str.replace(/“/g, '“'); str = str.replace(/”/g, '”'); str = str.replace(/„/g, '„'); str = str.replace(/†/g, '†'); str = str.replace(/‡/g, '‡'); str = str.replace(/•/g, '•'); str = str.replace(/…/g, '…'); str = str.replace(/‰/g, '‰'); str = str.replace(/′/g, '′'); str = str.replace(/″/g, '″'); str = str.replace(/‹/g, '‹'); str = str.replace(/›/g, '›'); str = str.replace(/‾/g, '‾'); str = str.replace(/€/g, '€'); str = str.replace(/™/g, '™'); str = str.replace(/←/g, '←'); str = str.replace(/↑/g, '↑'); str = str.replace(/→/g, '→'); str = str.replace(/↓/g, '↓'); str = str.replace(/↔/g, '↔'); str = str.replace(/↵/g, '↵'); str = str.replace(/⌈/g, '⌈'); str = str.replace(/⌉/g, '⌉'); str = str.replace(/⌊/g, '⌊'); str = str.replace(/⌋/g, '⌋'); str = str.replace(/◊/g, '◊'); str = str.replace(/♠/g, '♠'); str = str.replace(/♣/g, '♣'); str = str.replace(/♥/g, '♥'); str = str.replace(/♦/g, '♦'); str = str.replace(/'/g, '\''); return str; } function strMoreDiscode(str){ str = str.replace(/\r\n/g,""); str = str.replace(/\n/g,""); str = str.replace(/code/g,"wxxxcode-style"); return str; } function strDiscode(str){ str = strNumDiscode(str); str = strGreeceDiscode(str); str = strcharacterDiscode(str); str = strOtherDiscode(str); str = strMoreDiscode(str); return str; } function urlToHttpUrl(url,rep){ var patt1 = new RegExp("^//"); var result = patt1.test(url); if(result){ url = rep+":"+url; } returnurl; } module.exports = { strDiscode:strDiscode, urlToHttpUrl:urlToHttpUrl }