java正则表达式去除html标签保留指定标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java正则表达式去除html标签保留指定标签相关的知识,希望对你有一定的参考价值。

去除所有的html标签,只保留img标签和p标签,而且标签之间的文字也要保留,我表达的还不够清楚么?

此问题已解决,表达式:"</?(?!img|/?p|br|h\\d)[^>]+>"; 意思为保留img 、p标签、 br标签、和h标签,可随意更改

参考技术A String reg = "<\\/?html[^>]*>";
String html = "";
html.replaceAll(reg,"");追问

你这个双斜杠多余把大哥?为了你,我又描述了一遍我的问题

去除所有 HTML 标签,允许的除外

【中文标题】去除所有 HTML 标签,允许的除外【英文标题】:Strip all HTML tags, except allowed 【发布时间】:2011-09-08 23:24:46 【问题描述】:

我见过很多删除特定标签(或许多指定标签)和one to remove all but one specific tag 的表达式,但我还没有找到一种方法来删除除许多排除之外的所有内容(即除p, b, i, u, a, ul, ol, li 之外的所有内容)在 PHP 中。我对正则表达式还不够好,所以我需要帮助。 :) 谢谢!

【问题讨论】:

如果您不使用 HTML5,您可能需要查看:htmlpurifier.org 或来自 PEAR 的 HTML_Safe 包。它有一个选项来设置允许的标签列表。 【参考方案1】:

你可以使用strip_tags函数来做到这一点

¶ strip_tags — 从字符串中去除 HTML 和 PHP 标记

 strip_tags($contant,'tag you want to allow');

喜欢

  strip_tags($contant,'<code><p>');

【讨论】:

感谢您解释如何排除多个标签。原始文件对这一点不是很清楚。 如何允许这个标签?我没有得到它的工作&lt;link rel="canonical" href="http://www.ann24h.com/2017/10/blog-post_89.html"&gt;【参考方案2】:

strip_tags() 正是这样做的。

【讨论】:

有趣的是strip_tags 没有选项可以去除不允许的标签中的内容。会使功能更加通用。 php.net/strip_tags 页面确实有一个功能可以做到这一点。 strip_tags_content by mariusz.tarnaski 为什么这是公认的答案?????? strip_tags() 不完全是这个!标题说:去除所有 HTML 标签,»»»»»»除了«««««« 允许 对于 strip_tags(),它可以指定要包含的内容,而不是要排除的内容。 @icefront - 你需要学习阅读...引用文档:You can use the optional second parameter to specify tags which should not be stripped. These are either given as string, or as of PHP 7.4.0, as array @icefront 因为这是答案。 Strig_tags 接受第二个参数,我们可以在其中描述应该允许的标签。【参考方案3】:

如果您需要一些灵活性,您可以使用基于正则表达式的解决方案并在此基础上进行构建。如上所述的strip_tags 仍应是首选方法。

以下内容将仅去除您指定的标签(黑名单):

// tags separated by vertical bar
$strip_tags = "a|strong|em";

// target html
$html = '<em><b>ha<a href="" title="">d</a>f</em></b>';

// Regex is loose and works for closing/opening tags across multiple lines and
// is case-insensitive

$clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html);

// prints "<b>hadf</b>";
echo $clean_html;

【讨论】:

以上是关于java正则表达式去除html标签保留指定标签的主要内容,如果未能解决你的问题,请参考以下文章

前端JS正则表达式去除html字符中所有的标签

向各位正则高手请教:java 如何用正则 ,去除html标签之间的空格

java正则表达式去除html标签

java 如何去除html中的一个指定标签和指定标签里的内容

正则表达式去除 HTML 标签

正则表达式排除特定字符串