请问这个用正则如何匹配?
目的是匹配网页源代码中的href,大概有三种类型
类型一:
<th class="new">
---换行---
---换行---
<a href="http://bbs.111.com/thread-11.html" onclick="atarget(this)" class="xst" >一一一一(seo)</a>
类型二:
<th class="common">
<em>[<a href="http://www.444.com/forum.php?">引蜘蛛</a>]</em><a href="http://www.444.com/thread-263.html"
onclick="atarget(this)" class="xst" >二二二二</a>
类型三:
<th class="common">
<a href="http://www.555.com/thread-161.html" style="color: #EC1282" class="xst" target="_blank" >三三三</a>
自己写了个$pattern = "/".preg_quote('<th class="new">','/')."(.*)"."\n"." ".preg_quote('<a href="','/')."(.+)".preg_quote('"
','/').".+".preg_quote('class="xst" >','/').'/i';
但是不能完全匹配。。求高手帮忙
我说下我的思路先:
以<th class="new">或<th class="common">开头,然后是多余的字符然后换行(0个或多个),然后是<a href=",然后是要匹配的内容,然后接“" ”,然后是任意字符,最后以>结束。。但是匹配的时候经常是除了href的内容外 还会带上其它的
------解决方案--------------------
PHP code
$str=<<<html
<th class="new">
<a href="http://bbs.111.com/thread-11.html" onclick="atarget(this)" class="xst" >一一一一(seo)</a>
类型二:
<th class="common">
<em>[<a href="http://www.444.com/forum.php?">引蜘蛛</a>]</em><a href="http://www.444.com/thread-263.html"
onclick="atarget(this)" class="xst" >二二二二</a>
类型三:
<th class="common">
<a href="http://www.555.com/thread-161.html" style="color: #EC1282" class="xst" target="_blank" >三三三</a>
<th class="aa">
<a href="http://www.555.com/thread-161.html" style="color: #EC1282" class="xst" target="_blank" >三三三</a>
html;
preg_match_all('/(?:<th class="new|common">).+<a href="([^"]+)"\s*(?:onclick|style).+/isU',$str,$arr);
print_r($arr[1]);