我正在尝试使用Liquid模板语言将原始字符串转换为html。我想做的是转换它:
Hello. This
is a text.
Please convert me.
进入这个:
<p>Hello. This<br />
is a text.</p>
<p>Please convert me.</p>
我尝试了什么
{{ mytextvariable | newline_to_br | replace: "<br />\n<br />", "</p><p>" | replace: "<p></p>", "" | prepend: '<p>' | append: '</p>' }}
但这给了我(通知双<br />
):
<p>Hello. This<br />
is a text.<br />
<br />
Please convert me.</p>
网站记录
这将用于Shopify网站。
答案 0 :(得分:2)
使用newline_to_br时,您正在使用中断标记替换新行,因此第一次替换不会替换任何内容,新行也将消失。
答案 1 :(得分:1)
从我所看到的,Liquid不支持正则表达式,因此替换:"<br />\n<br />"
可能会按字面解释。
作为新过滤器可能更容易实现吗?
...像这样:
def newline_to_p_or_br(input)
input.to_s.gsub(/(.*?)\n\n/, "<p>\1</p>").gsub(/\n/, "<br />\n")
end
以下是newline_to_br
的定义供参考:
http://rubydoc.info/gems/liquid/2.2.2/Liquid/StandardFilters:newline_to_br