1

[]byte をフォーラム スタイルの Web アプリのメッセージ投稿の本文としてテンプレートに渡します。テンプレートで、メソッドを呼び出して文字列に変換し、途中ですべての改行を改行に切り替えます。

<p>{{.BodyString}}</p>

...

func (p *Post) BodyString() string {
    nl := regexp.MustCompile(`\n`)
    return nl.ReplaceAllString(string(p.Body), `<br>`)
}

最終的に得られるもの:

paragraphs <br> <br>in <br> <br>this <br> <br>post

投稿全体を HTML(p.Body) で渡したくありません。これは、信頼できない可能性のあるソースからのサード パーティ データを表しているためです。バニラ Go1 テンプレート パッケージを使用して、書式設定のために一部のタグのみをホワイトリストに登録する方法はありますか?

4

2 に答える 2

2

HTMLを解析したいと思います。exp/html の HTML パーサーは不完全であると見なされたため、Go 1 から削除されましたが、exp ツリーはまだ Go ソース ツリーにあり、たとえば、weekly タグでアクセスできます。何が不完全なのか正確にはわかりません。一度簡単な作業に使用しましたが、私のニーズを満たしました。

また、もちろん、ダッシュボードをチェックして、関連する SO 投稿を参照してください、主にhttp://code.google.com/p/go-html-transform/の推奨用

于 2012-04-05T17:56:29.123 に答える
1

テンプレート パッケージはこれにはあまり役に立たないのではないかと思います。特定の(ブラックリストに登録された)タグ(そのようなタグで囲まれたサブツリー)を削除したい場合、または特定のタグ(ホワイトリストに登録された)のみを渡すことを許可したい場合は、html AST を解析して書き換える以外に何もないと思います。良い解決策になります。そうは言っても、同じことをしようとしているいくつかの狂ったREがあちこちで見られますが、私はそれを「良い解決策」とは考えておらず、仕様に準拠したHTMLの一般的なケースでは「正しい」解決策であるとは思えません、おそらく通常の文法カテゴリの問題から除外されるため、いくつかの法的な違反を含みます。

于 2012-04-05T09:07:07.237 に答える