使用換行符克服html/模板中的轉義問題
在HTML 模板中,編碼為n 的換行符將呈現為HTML 實體(
) br>) 而非實際的換行符。當 n 個字元被模板轉義而不是作為可信資料的一部分接受時,就會發生這種情況。
解決方案:清理和預轉義
清理後,將所有出現的「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中文網其他相關文章!