Maison > développement back-end > Golang > Comment restituer correctement les sauts de ligne dans les modèles HTML ?

Comment restituer correctement les sauts de ligne dans les modèles HTML ?

Linda Hamilton
Libérer: 2024-10-30 14:59:02
original
1004 Les gens l'ont consulté

How to Properly Render Line Breaks in HTML Templates?

Remplacement des nouvelles lignes par
dans les modèles HTML

Dans les modèles HTML, le remplacement des nouvelles lignes (n) par un balisage (
) peut entraîner un comportement inattendu en raison d'une fuite. Lorsque la chaîne chargée est transmise au modèle, les nouvelles lignes sont échappées vers
, ce qui entraîne leur affichage sous forme de texte littéral au lieu de sauts de ligne.

Solution :

Pour résoudre ce problème, vous pouvez prétraiter le texte avant de l'utiliser dans le modèle. Voici comment :

  1. Nettoyer l'entrée : Utilisez la fonction template.HTMLEscape() pour nettoyer le texte et supprimer tous les fragments potentiellement malveillants.
  2. Remplacer les nouvelles lignes : Après la désinfection, remplacez les nouvelles lignes (n) par un balisage (
    ).
  3. Envelopper en HTML : Encapsuler le texte prétraité au format HTML à l'aide de template.HTML . Cela garantit que le moteur de modèle sait que le contenu est sûr.
  4. Exécutez le modèle : Transmettez le texte nettoyé et prétraité au modèle pour le rendu.

Exemple de code :

<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>
Copier après la connexion

Ce code garantit que tout contenu malveillant dans le texte saisi est neutralisé et permet un rendu correct des nouvelles lignes à l'aide du balisage.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal