2

我正在尝试使用 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>' }}

但这给了我(注意 double <br />):

<p>Hello. This<br />
is a text.<br />
<br />
Please convert me.</p>

网站说明

这将用于 Shopify 网站。

4

2 回答 2

2

使用 newline_to_br 时,您正在用中断标记替换新行,因此第一个替换不会替换任何内容,换行已消失。

于 2012-08-13T17:41:10.870 回答
0

据我所知,Liquid 不支持正则表达式,因此 replace:"<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

于 2012-08-13T14:52:35.753 回答