怎么让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;
<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 【问题描述】:我要做一个笔记应用程序,所以我决定为此使用summernote
和python 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 的 safe
或 escape
过滤器
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显示纯文本的主要内容,如果未能解决你的问题,请参考以下文章