将html文本拆分为2段

时间:2010-04-11 22:22:59

标签: ruby-on-rails string

嗨,我有一个像这样的HTML文字:

aaa dafjsld dslajfk òsal asfòljd <a href="ciao.com">aa aa</a> adsfsadfsadfs

我想将它分成两段。但我不想产生这种情况:

<p>aaa dafjsld dslajfk òsal asfòljd <a href="ciao.com">aa</p><p> aa</a> adsfsadfsadfs</p>

如何检查拆分是否包含任何标签并避免使用?

谢谢

3 个答案:

答案 0 :(得分:2)

假设您的文字格式正确,可以使用simple_format。您的链接文本应该在段落内部结束,而不是在下一个段落中,所以我稍微修改了它:

 aaa dafjsld dslajfk òsal asfòljd <a href='ciao.com'>aa</a>

 aa adsfsadfsadfs

这将输出:

如果您将其传递给<p>aaa dafjsld dslajfk òsal asfòljd <a href='ciao.com'>aa</a></p><p>aa adsfsadfsadfs</p>,则

simple_format或其他相似内容。

答案 1 :(得分:2)

为Rails使用'HtmlSlicer'gem。

将此行放在您的Gemfile中:

gem 'html_slicer'

然后捆绑:

% bundle

Gem的行为要复杂得多,它不能按部件数量分割文本。 无论如何,由于你当地的任务:

content = "aaa dafjsld dslajfk òsal asfòljd <a href=\"ciao.com\">aa aa</a> adsfsadfsadfs"
split = HtmlSlicer::Interface.new(content, {:slice => {:maximum => 30}})
split
=> "aaa dafjsld dslajfk òsal asfòljd <a href=\"ciao.com\">aa</a>"
split.slice!(2)
=> "<a href=\"ciao.com\"> aa</a> adsfsadfsadfs"

答案 2 :(得分:0)

在不了解更多问题的情况下,最通用的解决方案可能涉及Hpricot或REXML。这将确保正确处理任何嵌套标记。您可以遍历节点列表并确定创建段落的位置。