Surmonter le problème d'échappement dans html/templates avec des nouvelles lignes
Dans les modèles HTML, les nouvelles lignes codées comme n sont rendues sous forme d'entités HTML (< br>) plutôt que des sauts de ligne réels. Cela se produit lorsque les n caractères sont échappés par le modèle au lieu d'être acceptés comme faisant partie des données fiables.
Solution : assainissement et pré-échappement
Pour résoudre ce problème, suivez ces étapes :
Exemple de mise en œuvre :
Le code suivant illustre le processus :
<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>
Ce code nettoie le texte, remplace les nouvelles lignes par
et le transmet au modèle en tant que données pré-échappées. Le résultat rendu affichera correctement les sauts de ligne comme prévu sans échapper aux problèmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!