怎么让HTML显示纯文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么让HTML显示纯文本相关的知识,希望对你有一定的参考价值。

在网页刚流行起来的时候,提取html中的文本有一个简单的方法,就是将html文本(包含标记)中的所有以“<”符号开头到以“>”符号之间的内容去掉即可。
但对于现在复杂的网页而言,用这种方法提取出来的文本会有大量的空格、空行、script段落、还有一些html转义字符,效果很差。
下面用正则表达式来提取html中的文本,
代码的实现的思路是:
a、先将html文本中的所有空格、换行符去掉(因为html中的空格和换行是被忽略的)
b、将<head>标记中的所有内容去掉
c、将<script>标记中的所有内容去掉
d、将<style>标记中的所有内容去掉
e、将td换成空格,tr,li,br,p 等标记换成换行符
f、去掉所有以“<>”符号为头尾的标记去掉。
g、转换&,&nbps;等转义字符换成相应的符号
h、去掉多余的空格和空行
代码如下:

using System;
using System.Text.RegularExpressions;
namespace Kwanhong.Utilities

/// <summary>
/// HtmlToText 的摘要说明。
/// </summary>
public class HtmlToText

public string Convert(string source)

string result;
//remove line breaks,tabs
result = source.Replace("\r", " ");
result = result.Replace("\n", " ");
result = result.Replace("\t", " ");
//remove the header
result = Regex.Replace(result, "(<head>).*(</head>)", string.Empty, RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"<( )*script([^>])*>", "<script>", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"(<script>).*(</script>)", string.Empty, RegexOptions.IgnoreCase);
//remove all styles
result = Regex.Replace(result, @"<( )*style([^>])*>", "<style>", RegexOptions.IgnoreCase); //clearing attributes
result = Regex.Replace(result, "(<style>).*(</style>)", string.Empty, RegexOptions.IgnoreCase);
//insert tabs in spaces of <td> tags
result = Regex.Replace(result, @"<( )*td([^>])*>", " ", RegexOptions.IgnoreCase);
//insert line breaks in places of <br> and <li> tags
result = Regex.Replace(result, @"<( )*br( )*>", "\r", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"<( )*li( )*>", "\r", RegexOptions.IgnoreCase);
//insert line paragraphs in places of <tr> and <p> tags
result = Regex.Replace(result, @"<( )*tr([^>])*>", "\r\r", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"<( )*p([^>])*>", "\r\r", RegexOptions.IgnoreCase);
//remove anything thats enclosed inside < >
result = Regex.Replace(result, @"<[^>]*>", string.Empty, RegexOptions.IgnoreCase);
//replace special characters:
result = Regex.Replace(result, @"&", "&", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @" ", " ", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"<", "<", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @">", ">", RegexOptions.IgnoreCase);
result = Regex.Replace(result, @"&(.2,6);", string.Empty, RegexOptions.IgnoreCase);
//remove extra line breaks and tabs
result = Regex.Replace(result, @" ( )+", " ");
result = Regex.Replace(result, "(\r)( )+(\r)", "\r\r");
result = Regex.Replace(result, @"(\r\r)+", "\r\n");
return result;

//end class
//end namespace
参考技术A 是不编译成html页面,完全显示html代码吗?
function html_encode(strHTML) //使用此函数编码你的文章

var strTem = "";
if (strHTML.length == 0) return "";
strTem = strHTML.replace(/&/g, ">");
strTem = strTem.replace(/</g, "<");
strTem = strTem.replace(/>/g, ">");
strTem = strTem.replace(/ /g, " ");
strTem = strTem.replace(/\'/g, "'");
strTem = strTem.replace(/\"/g, """);
strTem = strTem.replace(/\n/g, "");
return strTem;

//编码后在把内容赋值给相应的显示控件即可
//使用下面这句测试一下显示的内容:
document.write(html_encode(document.body.innerHTML));

将 vue.js 获取的 html 文本转化为纯文本

我存入数据表中的数据是使用 html  格式,获取数据是使用 vue 获取。

遇到了一个问题,就是界面上显示的数据是 html 格式的,但是我需要它显示纯文本。

怎么做呢?首先在  js  中写一个将 html 格式转化为纯文本的函数:

这是我从其他博客上找到的函数,亲测可用。

function ToText(HTML)
  {
      var input = HTML;
      return input.replace(/<(style|script|iframe)[^>]*?>[sS]+?</1s*>/gi,‘‘).replace(/<[^>]+?>/g,‘‘).replace(/s+/g,‘ ‘).replace(/ /g,‘ ‘).replace(/>/g,‘ ‘);  
  }

然后,在界面上引入该 js 文件,然后直接使用该函数即可。

 

以上是关于怎么让HTML显示纯文本的主要内容,如果未能解决你的问题,请参考以下文章

如何编辑 Mailchimp 自动化电子邮件的纯文本版本?

纯文本文档如何转换成excel工作表

Visual Studio中如何设置文本字体

HTML5基本介绍

notepad++怎么让js代码高亮显示

WordPress的神器