改行を
に置き換えます。 HTML テンプレート内
HTML テンプレートで改行 (n) をマークアップ (
) に置き換えると、エスケープが原因で予期しない動作が発生する可能性があります。ロードされた文字列がテンプレートに渡されると、改行は
にエスケープされ、改行ではなくリテラル テキストとして表示されます。
解決策:
この問題に対処するには、テンプレートで使用する前にテキストを前処理します。方法は次のとおりです:
コード例:
<code class="go">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)) // Encapsulate as HTML }</code>
このコードは、入力テキスト内の悪意のあるコンテンツが確実に無力化され、マークアップを使用して改行を適切にレンダリングできるようにします。
以上がHTML テンプレートで改行を適切にレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。