在没有浏览器环境的情况下将JS转换为纯文本 [英] Convert HTML to plain text in JS without browser environment
本文介绍了在没有浏览器环境的情况下将JS转换为纯文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个CouchDB视图映射函数,它生成一个存储的HTML文档的摘要(第一个 x
文本字符)。不幸的是我没有将HTML转换为纯文本的浏览器环境。
I have a CouchDB view map function that generates an abstract of a stored HTML document (first x
characters of text). Unfortunately I have no browser environment to convert HTML to plain text.
目前我使用的是这个多阶段正则表达式
Currently I use this multi-stage regexp
html.replace(/<style([\s\S]*?)<\/style>/gi, ' ')
.replace(/<script([\s\S]*?)<\/script>/gi, ' ')
.replace(/(<(?:.|\n)*?>)/gm, ' ')
.replace(/\s+/gm, ' ');
虽然它是一个非常好的过滤器,但它显然不是一个完美的过滤器,而且有些残留物有时会漏掉。有没有更好的方法在没有浏览器环境的情况下转换为纯文本?
while it's a very good filter, it's obviously not a perfect one and some leftovers slip through sometimes. Is there a better way to convert to plain text without a browser environment?
推荐答案
将HTML转换为纯文本,如Gmail:
Converter HTML to plain text like Gmail:
html = html.replace(/<style([\s\S]*?)<\/style>/gi, '');
html = html.replace(/<script([\s\S]*?)<\/script>/gi, '');
html = html.replace(/<\/div>/ig, '\n');
html = html.replace(/<\/li>/ig, '\n');
html = html.replace(/<li>/ig, ' * ');
html = html.replace(/<\/ul>/ig, '\n');
html = html.replace(/<\/p>/ig, '\n');
html = html.replace(/<br\s*[\/]?>/gi, "\n");
html = html.replace(/<[^>]+>/ig, '');
如果你可以使用 jQuery
:
var html = jQuery('<div>').html(html).text();
这篇关于在没有浏览器环境的情况下将JS转换为纯文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文