让我们说我需要在一些h1,h2或h3标签中找到一个字符串
/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/
如果用户决定对标题采取合理的方法,这非常有用:
<h1>My Header</h1>
但是了解我的用户,他们想要大胆,斜体,带下划线的h1。并且他们有编码泥潭tinyMCE来帮助他们做到这一点。 TinyMCE将输出:
<h1><b><span style='text-decoration: underline'><i>My Hideous Header</i></span></b></h1>
所以我的问题是:
我如何在h1 h2或h3中找到一个字符串,然后在任何数量的周围其他标签内?
谢谢, 乔
答案 0 :(得分:3)
/<(h[1-3])[^>]*>(?:.*?>)?([^<]+)(?:<.*?)?<\/\1>/i
制作破坏它的案例并不会太难,因为(我相信人们会告诉你)解析HTML是HTML解析器的工作,而不是正则表达式,但它适用于您的给定案例和各种类似的。
答案 1 :(得分:1)
如果您使用的是php,则可以使用正则表达式:
/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/
然后通过strip_tags()函数传递捕获的结果,以消除内部的所有精神错乱。
如果你不在php上,你可以通过regexp replace传递结果,删除标签。像替换的东西
/<\/?[^>]+?>/
用空字符串。
答案 2 :(得分:-1)
如果您只想捕获最终嵌套的文本,您可以删除标题标记内的所有标记:
/<([hH][1-3]).*>(.*?)<.*\/$1>/
未经测试,但我认为它应该有用。