2009-09-02 151 views
1

可以说,我需要得到一些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里面,然后周围的其他标记,以及任何数量的内部?

谢谢, 乔

+1

这个怎么样? '

我的 Hide 012标题

'你想检索完整的标题字符串及其嵌入的''标签吗? – 2009-09-03 00:06:49

回答

1

如果您在PHP是您可以使用您正则表达式:

/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/

然后通过用strip_tags通过捕获结果()函数来获取里面摆脱所有的疯狂。

如果你不在PHP上,你可以通过regexp replace来传递结果去除标签。类似于用空字符串替换 /<\/?[^>]+?>/

3
/<(h[1-3])[^>]*>(?:.*?>)?([^<]+)(?:<.*?)?<\/\1>/i 

这不会是太难做出令人发指打破它的情况下,因为(我敢肯定,人们会告诉你)解析HTML是一种HTML解析器工作,而不是正则表达式,但它适用于您的特定情况和各种类似的情况。

+0

+1,特别是对于“不要使用正则表达式”的评论 – 2009-09-02 21:06:28

+0

+1,原因与simonn相同! – TrueWill 2009-09-02 23:34:04

-1

如果你只是想捕捉的最终文本嵌套你可以只落标头标记内的所有标签有:

/<([hH][1-3]).*>(.*?)<.*\/$1>/ 

未经检验的,但我认为它应该工作。

+1

没有。 '(。*?)'被允许不匹配,并且感谢它前面的贪婪的'。*',这正是它所做的。 – 2009-09-03 04:08:57

相关问题