Maison >développement back-end >Golang >Comment afficher correctement les nouvelles lignes dans les modèles HTML ?

Comment afficher correctement les nouvelles lignes dans les modèles HTML ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 20:02:02743parcourir

How to Render Newlines Correctly in HTML Templates?

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 :

  1. Nettoyez le texte : Utilisez template.HTMLEscape() pour supprimer tous les caractères potentiellement dangereux du fichier texte.
  2. Remplacez nouvelles lignes : Après la désinfection, remplacez toutes les occurrences de "n" par "
    ".
  3. Utilisez les données pré-échappées : Transmettez le texte nettoyé et substitué au modèle en tant que template.HTML, qui encapsule des fragments HTML sécurisés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn