gpt4 book ai didi

java - 删除 Freemarker 模板中的 HTML 标签

转载 作者:行者123 更新时间:2023-11-28 05:14:06 24 4
gpt4 key购买 nike

我有一个 freemarker 模板,它在允许 HTML 的上下文和不允许的上下文中显示相同的字符串。

Freemarker 中是否有内置功能允许我从字符串中完全删除 HTML 标签?

以下模板(假设有一个内置的 remove_html )

<#ftl output_format="HTML"/>
<html>
<head>
<title>${page_title?remove_html}</title>
</head>
<body>
<h1>${page_title?no_esc}</h1>
</body>
</html>

和模型 Collections.singletonMap("page_title", "A <strong>Strong</strong> Argument")应该导致

<html>
<head>
<title>A Strong Argument</title>
</head>
<body>
<h1>A <strong>Strong</strong> Argument</h1>
</body>
</html>

使用内置的 esc会给我<title>A &lt;strong&gt;Strong&lt;/strong&gt; Argument</title>相反,这不是我要找的

有没有类似remove_html的东西还是我需要自己提供? (例如,使用 OWASP's java-html-sanitizer。)

最佳答案

您可以使用带有“r”标志的 Freemarker 内置字符串替换函数来启用正则表达式。

这是一个简单的正则表达式,可以解决这个问题:

${page_title?replace('<[^>]+>','','r')}

请注意,如果您在正则表达式中使用反斜杠,则必须对其进行转义,如下所示(删除空格的人为示例):

${page_title?replace('\\s+','','r')}

关于java - 删除 Freemarker 模板中的 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com