怎么让HTML显示纯文本

Posted

tags:

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

例如我输入 1

html是超文本标记语言,标准通用标记语言下的一个应用。

“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。

超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

1、在做接口的时候,有些模板xml标签不是CDATA规范的,这样就会在碰到&这样的字符出现错误,需要替换,简单的思路是字符串替换或正则匹配,将&替换成& 。


2、特别是有些专辑描述是html的内容,写入xml文件的时候需要将html内容转化为文本内容。  


3、下面给出HTML内容输出为存文本的两种工具方法,方便以后查阅。  

方法一:正则替换: 

/** 

* html转化为text 

* @param inputString 

* @return 

*/ 

public static String html2Text(String inputString)  

String htmlStr = inputString; // 含html标签的字符串 

String textStr = ""; 

java.util.regex.Pattern p_script; 

java.util.regex.Matcher m_script; 

java.util.regex.Pattern p_style;

java.util.regex.Matcher m_style; 

java.util.regex.Pattern p_html; 

java.util.regex.Matcher m_html; 

try  

String regEx_script = "<[\\\\s]*?script[^>]*?>[\\\\s\\\\S]*?<[\\\\s]*?\\\\/[\\\\s]*?script[\\\\s]*?>"; // 定义script的正则表达式或<script>]*?>[\\s\\S]*?<\\/script> 

//  

String regEx_style = "<[\\\\s]*?style[^>]*?>[\\\\s\\\\S]*?<[\\\\s]*?\\\\/[\\\\s]*?style[\\\\s]*?>"; // 定义style的正则表达式或<style>]*?>[\\s\\S]*?<\\/style> 

//  

String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式

p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); 

m_script = p_script.matcher(htmlStr); 

htmlStr = m_script.replaceAll(""); // 过滤script标签

p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); 

m_style = p_style.matcher(htmlStr); 

htmlStr = m_style.replaceAll(""); // 过滤style标签

p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); 

m_html = p_html.matcher(htmlStr); 

htmlStr = m_html.replaceAll(""); // 过滤html标签 


textStr = htmlStr;

catch (Exception e)  

System.err.println("Html2Text: " + e.getMessage()); 



return textStr; 

 

方法二:采用api形式,先倒入jar包htmllexer.jar,htmlparser.jar,sitecapturer.jar,thumbelina.jar,filterbuilder.jar :

public static String getHtmlText(String htmlContent) throws Exception 


if(htmlContent==null)htmlContent=""; 

//         增加一个<br/>,经测试,如果正文为纯文本,org.htmlparser会把参数当作一个文件处理 

StringBuffer sbf = new StringBuffer(""); 

sbf.append("<br />").append(htmlContent); 

Parser parser = new Parser(sbf.toString()); 

TextExtractingVisitor visitor = new TextExtractingVisitor(); 

parser.visitAllNodesWith(visitor); 

String sReturn = visitor.getExtractedText(); 

sReturn = sReturn.replace(" ", "");//去掉空格以便统计字数
return sReturn;



参考技术A 在BODY里,只使用br标签或pre标签,不使用任何样式,这样在浏览器中的效果就和纯文本没什么区别. 参考技术B innerText 参考技术C 直接输入1就可以
<html>
<head></head>
<body>1</body>
</html>
参考技术D 去掉css就显示存文本

Python将纯文本显示为html [重复]

【中文标题】Python将纯文本显示为html [重复]【英文标题】:Python display plain text as html [duplicate] 【发布时间】:2020-03-25 18:34:36 【问题描述】:

我要做一个笔记应用程序,所以我决定为此使用summernotepython flask。 我得到了一个表单,用户必须使用summernote textarea输入标题和内容,然后输入存储在数据库中。 我遇到的问题是当我尝试以纯文本形式显示注释时

这就是我展示它们的方式

            % for foo in notes %
                <div class="card">
                    <div class="card-header">
                        <div class="card-title"> foo.title </div>
                    </div>
                    <div class="card-body">
                        <div class="ribbon-wrapper ribbon-lg">
                        <div class="ribbon bg-primary">
                            <p> foo.category_name </p>
                        </div>
                    </div>
                         foo.content 
                    </div>
                    <div class="card-footer">
                        <a href="#" class="btn btn-info btn-xs"><i class="fas fa-eye"></i></a>
                        <a href="#" class="btn btn-danger btn-xs"><i class="fas fa-trash"></i></a>
                    </div>
                </div>
            % endfor %

有什么方法可以实际呈现 HTML 内容而不是显示为纯文本?

【问题讨论】:

【参考方案1】:

使用 Jinja 的 safeescape 过滤器

https://jinja.palletsprojects.com/en/2.10.x/templates/?highlight=safe#safe

https://jinja.palletsprojects.com/en/2.10.x/templates/?highlight=safe#escape

 foo.content | safe    
 foo.content | escape    

始终注意信任用户输入:https://flask.palletsprojects.com/en/1.1.x/security/

【讨论】:

调用| safe 过滤器将绕过自动转义功能! OP 开发了一个笔记应用程序,因此用户提供了 HTML 字符串。相信这是一个糟糕的想法,也是 XSS 攻击的绝佳机会。 flask.palletsprojects.com/en/1.1.x/security @KristofGilicze 这是真的。你有替代解决方案吗?我通常会使用 CSP 来防止这种情况发生。

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

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

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

Visual Studio中如何设置文本字体

HTML5基本介绍

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

WordPress的神器