Help us understand the problem. What is going on with this article?

[Hugo]plainify関数で<br>を消した際に改行コードが入ってしまう問題

More than 1 year has passed since last update.

plainify関数とは

plainify - 公式ドキュメント - 文字列からHTMLタグを削除してプレインテキストを返す関数

{{ "<b>BatMan</b>" | plainify }} → "BatMan"

このようにHTMLタグが取り除かれた状態の文字列が返ってくる

今回の問題

{{ "Bat<br>Man" | plainify }} → "Bat\nMan"

このように<br>を入れると削除ではなく\nに置換された状態で返ってくる

解決策

色々調べたがHugoにあまり詳しくないせいか単純な解決策は見つからなかった

今回は<br>さえ消えてくれればよかったので

{{ replace "Bat<br>Man" "<br>" "" }} → "BatMan"

replace関数で<br>を空文字列に置換する事で対処した

綺麗に解決できる方法ご存知の方がいればぜひコメントお願いします!

追記

ソースコード見てたら

https://github.com/gohugoio/hugo/blob/b2a3d4644bb5a505db662b2927af6f80856a3076/helpers/content.go#L188

content.go
var stripHTMLReplacer = strings.NewReplacer("\n", " ", "</p>", "\n", "<br>", "\n", "<br />", "\n")

こういう一行が処理にあったのでHTMLは全部消す(但し、これらは例外的に以下のように置換処理)って関数として納得するしか無いと思います... オプションとか無いし...

"\n" => " "
"</p>" => "\n"
"<br>" => "\n"
"<br />" => "\n"
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away