改行を使用した HTML/テンプレートのエスケープ問題の克服
HTML テンプレートでは、n としてエンコードされた改行は HTML エンティティ (< br>) 実際の改行ではなく。これは、n 文字が信頼できるデータの一部として受け入れられるのではなく、テンプレートによってエスケープされる場合に発生します。
解決策: サニタイズと事前エスケープ
この問題を解決するには、次のようにします。次の手順に従ってください:
実装例:
次のコードは、プロセスを示します:
<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 中国語 Web サイトの他の関連記事を参照してください。