2010-08-12 144 views
2

我有一些包含萤火虫隐藏div的标记。 (长话短说,包括隐藏的萤火虫div的,YUI RTE发表内容回是被激活)正则表达式来获取具有特定ID的整个div?

所以,在我上传的内容我有多余的div我将在PHP中删除服务器端:

<div firebugversion="1.5.4" style="display: none;" id="_firebugConsole"></div> 

我似乎无法得到正则表达式的句柄,我需要编写匹配这个字符串,铭记它不会总是那个确切的字符串(版本可能会改变)。

欢迎所有帮助!

+0

考虑的最后一个:'

' – 2010-08-12 12:30:42

+0

也考虑:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-08-12 12:45:11

回答

2

正则表达式是不是做这项工作的最佳工具,但你可以尝试:

<div firebugversion=[^>]*></div> 

[…]character class。类似于[aeiou]的东西匹配任何一个小写元音。 [^…]否定字符类。 [^aeiou]匹配之间的任何内容,但之间的小写元音。

*是零或多repetition。因此,[^>]*匹配除了>之外的任何序列。

如果你要定位的id具体情况,你可以尝试:

<div [^>]*\bid="_firebugConsole"[^>]*></div> 

\bword boundary锚。

1

我建议这样的:

\<div firebugversion="(.+)" style="(.+)" id="(.+)"\> 

然后你有三组:

  1. firebugversion
  2. 风格
  3. ID
+0

'<' and '>'不需要转义。 – 2010-08-12 12:31:25

2

匹配这个表达式 -

<div.*id="_firebugConsole".*?/div> 
1

这一个是有点复杂,而且很可能并不完美,但它会:

  • 匹配包含属性firebugversion
  • 匹配的firebugversion属性无论哪个订单属性出现在任何的div标签
  • 匹配div,即使它包含它与其结束标签之间的内容或间距(我已经看到了萤火虫标签与& nbsp;它里面标记之前)。注意:它懒惰匹配,因此将下一个标签只匹配,而不是找到文档中

<(div)\b([^>]*?)(firebugversion)([^>]*?)>(.*?)</div>