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

Android应用解析HTML提取纯文本:模拟PHP strip_tags功能

在Android中实现PHP strip_tags的等效功能

嘿,这个问题我刚好研究过!要在Android里实现和PHP的strip_tags完全一致的效果,其实有几种靠谱的方案,我给你详细说说:

方案一:使用Android系统自带的Html类(推荐)

Android的android.text.Html类已经内置了成熟的HTML解析能力,它处理标签的逻辑和strip_tags高度贴合,还能避开正则表达式的各种坑。

代码实现

import android.text.Html;
import android.os.Build;

public String stripHtml(String htmlContent) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // API 24及以上使用LEGACY模式,保持和旧版本一致的解析行为
        return Html.fromHtml(htmlContent, Html.FROM_HTML_MODE_LEGACY).toString();
    } else {
        // 旧版本直接调用fromHtml即可
        return Html.fromHtml(htmlContent).toString();
    }
}

为什么推荐这个?

  • 它会自动处理所有HTML标签:包括成对标签(比如<div>、<p>)、自闭合标签(比如<br/>、<img/>),甚至是注释标签<!-- ... -->,和strip_tags的默认行为完全匹配。
  • 系统的HTML解析器比正则更可靠,能应对各种边缘情况(比如标签属性里包含特殊字符),不会出现正则匹配不完整的问题。

方案二:正则表达式(适合简单场景)

如果你只需要处理结构简单的HTML,也可以用正则来模拟strip_tags的行为,但要注意它的局限性。

代码实现

public String stripTagsWithRegex(String htmlContent) {
    // 匹配所有以<开头、以>结尾的内容,替换为空
    return htmlContent.replaceAll("<[^>]+>", "");
}

注意事项

这个正则的逻辑和strip_tags基本一致,但遇到标签属性里包含>的情况(比如<a href="example?param=1>2">),正则会提前终止匹配,导致部分残留内容,而strip_tags会正确移除整个标签。所以复杂场景下不推荐用正则。

关于自定义允许标签

如果需要像strip_tags($html, '<p><a>')那样保留指定标签,Android的Html.fromHtml可以配合TagHandler来实现,但需要自己编写逻辑处理允许的标签,确保和PHP的行为一致。不过如果你的需求只是移除所有标签,方案一就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:31