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 :
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>
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!