首页 > 后端开发 > Golang > 正文

如何在 HTML 模板中正确渲染换行符?

Susan Sarandon
发布: 2024-10-30 20:02:02
原创
697 人浏览过

How to Render Newlines Correctly in HTML Templates?

使用换行符克服 html/模板中的转义问题

在 HTML 模板中,编码为 n 的换行符将呈现为 HTML 实体(

) br>) 而不是实际的换行符。当 n 个字符被模板转义而不是作为可信数据的一部分接受时,就会发生这种情况。

解决方案:清理和预转义

  1. 要解决此问题,请按照以下步骤操作:
  2. 清理文本:使用 template.HTMLEscape() 从文本文件中删除任何可能有害的字符。
  3. 替换换行符: 清理后,将所有出现的“n”替换为“
    ”。
使用预转义数据:

将清理和替换的文本传递到模板作为 template.HTML,封装了安全的 HTML 片段。

示例实现:

<code class="go">package main

import (
    "html/template"
    "os"
    "strings"
)

const page = `<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <p>{{.}}</p>
  </body>
</html>`

const text = `first line
<script>dangerous</script>
last line`

func main() {
    t := template.Must(template.New("page").Parse(page))
    safe := template.HTMLEscapeString(text)
    safe = strings.Replace(safe, "\n", "<br>", -1)
    t.Execute(os.Stdout, template.HTML(safe))
}</code>
登录后复制

以下代码演示了该过程:

此代码清理文本,用
替换换行符,并将其作为预转义数据传递到模板。渲染结果将按预期正确显示换行符,而不会逃避问题。

以上是如何在 HTML 模板中正确渲染换行符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!