ऐसा लगता है कि आप इसे साफ़ करने में पहले अपने पाठ पर template.HTMLEscape() चला सकते हैं, तो कार्य करें:
देखें \ n से
प्रतिस्थापन जिसे आप भरोसा करते हैं, फिर इसे पूर्व-बच निकले और भरोसेमंद टेम्पलेट डेटा के रूप में उपयोग करें।
अद्यतन:
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)) // template.HTML encapsulates a known safe HTML document fragment.
}
http://play.golang.org/p/JiH0uD5Zh2
आउटपुट है
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>first line<br><script>dangerous</script><br>last line</p>
</body>
</html>
और पाठ ब्राउज़र में गाया
है: Kocka के उदाहरण पर विस्तार, यह क्या मैं मन में था है
first line
<script>dangerous</script>
last line
मैं क्योंकि मेरे स्ट्रिंग सुरक्षित नहीं है 'template.HTML' करने के लिए इसे डाली नहीं कर सकता। क्या आप पाइललाइन चाल का विस्तार कर सकते हैं? बहुत स्ट्रिंग –
यदि स्ट्रिंग सुरक्षित नहीं है तो पाइपलाइन या तो मदद करने वाली नहीं है। स्ट्रिंग को '\ n "' पर विभाजित करने का प्रयास करें और परिणामी टुकड़ा को टेम्पलेट में पास कर दें। स्ट्रिंग को मुद्रित करने के लिए 'श्रेणी' का उपयोग करें और'
'डालें। 'आगमन: उदाहरण के लिए: = strings.Split (myString," \ n ")' जाने कोड में, और '{{रेंज आगमन}} {। {}} {{
अंत}}' में टेम्पलेट। – dskinner
@ डस्किनर, मुझे पता है कि यह देर हो चुकी है, लेकिन आपको अपनी पूरी प्रतिक्रिया के रूप में लिखना चाहिए। यह एक बहुत साफ समाधान है। – Nashenas