日期:2014-05-17  浏览次数:20672 次

请问这个用正则如何匹配?
目的是匹配网页源代码中的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]);