Android:删除除 img 标签之外的所有 html

Android: Strip all html except for img tags

在 Java 中,我看到一个可以轻松指定白名单标签并去除其余的 html 标签:

Whitelist whitelist = Whitelist.none();
whitelist.addTags(new String[] { "p", "br", "ul" });

String safe = Jsoup.clean(unsafe, whitelist);
return StringEscapeUtils.unescapeXml(safe);

PHP 也有 strip_tags($html, $whitelist) 函数来做同样的事情。

我在 Android 中看到,你可以这样做:

android.text.Html.fromHtml(instruction).toString()

但这会删除整个 html,包括 img 标签。

或者,可以使用 Jsoup 库,但是我们没有更简单的解决方案而不是使用这个 300kb 库来满足这个简单的要求吗?

在 Android 中,如何去除给定文本中除 <img> 标签之外的所有 html?

这有点 hacky,但它可以完成工作:

  • 用一些特殊字符串替换所有 img 标签,这样剥离函数就看不到它们
  • 去掉所有 HTML
  • 将 img 标签替换为特殊字符串以将其取回。

    String stripHTMLtagsExceptIMG(String htmlString)
    {
        String subbed = htmlString.replaceAll("< *[iI][mM][gG]", "_iimmgg");
        String stripped = android.text.Html.fromHtml(subbed).toString();
        String unsubbed = stripped.replaceAll("_iimmgg", "<img");
    
        return unsubbed;
    }