在没有浏览器环境的情况下将JS转换为纯文本 [英] Convert HTML to plain text in JS without browser environment

查看:148
本文介绍了在没有浏览器环境的情况下将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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆