怎么让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显示纯文本的主要内容,如果未能解决你的问题,请参考以下文章