You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Jekyll中去除HTML标签的帖子渲染内容?

嘿,这个问题我之前折腾Jekyll静态博客的时候也碰到过!默认调用post.content拿到的确实是渲染好的完整HTML代码,要提取纯文本内容其实有几个实用的方案,看你需求来选:

1. 最快捷:用Jekyll内置的strip_html过滤器

这是最简单的方式,Jekyll自带了strip_html过滤器,直接就能把所有HTML标签去掉,只留下纯文本内容。用法很简单:

{{ post.content | strip_html }}

这个过滤器会直接剥离所有<>包裹的标签,连HTML注释也会一并去掉,输出就是干净的纯文本。如果只是需要基础的纯文本提取,这个完全够用。

2. 自定义过滤器(适合需要精细处理的场景)

如果你希望对纯文本做更多优化——比如去掉多余的空格、合并连续换行,或者处理一些特殊标签残留的内容,可以自己写一个Liquid过滤器。

在你的Jekyll项目根目录下创建_plugins文件夹(如果没有的话),然后新建一个text_processing.rb文件,写入以下代码:

module TextProcessingFilters
  def clean_plain_text(input)
    # 第一步:剥离所有HTML标签
    stripped_text = input.gsub(/<[^>]+>/, '')
    # 第二步:把连续的空格、换行、制表符替换成单个空格
    cleaned_text = stripped_text.gsub(/\s+/, ' ').strip
    # 可以在这里加更多自定义处理逻辑,比如去掉特殊字符之类的
    cleaned_text
  end
end

Liquid::Template.register_filter(TextProcessingFilters)

然后在模板里就可以用这个自定义过滤器了:

{{ post.content | clean_plain_text }}

这种方式可以根据你的需求灵活调整处理逻辑,适合有特殊格式要求的场景。

3. 基于原始Markdown内容处理(可选)

如果你的帖子是用Markdown写的,也可以直接拿原始的Markdown内容转纯文本。Jekyll的文章对象有raw_content属性,它存储的是未渲染的原始Markdown代码。你可以先把它转成HTML,再剥离标签:

{{ post.raw_content | markdownify | strip_html }}

不过这个和直接用post.content | strip_html效果差不多,除非你需要在渲染前对Markdown做额外处理,否则没必要多这一步。

内容的提问来源于stack exchange,提问作者Benjamin Sommer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:55:12