前两天有空,自己写了一个正则表达式,抓取html页面中标签内的内容
页面内容:
<table cellspacing="0" cellpadding="3" rules="all" bordercolor="#B5D6E6" border="1" id="ctl00_ContentPlaceHolder1_DataListBill_ctl00_GridViewBill" bgcolor="White" width="100%">
<tr class="HeaderRow">
<th scope="col" bgcolor="#F3F3F3" width="82">日期</th>
<th scope="col" bgcolor="#F3F3F3" width="45">时间</th>
<th scope="col" bgcolor="#F3F3F3" width="339">跟踪记录</th>
</tr>
<tr class="Row">
<td width="82">2011-01-12</td><td width="45">20:24</td>
<td align="left" width="339">
<a href="#" ><font color=#FF0000> 北京上地 </font></a>
<a href="#"><font color=#0000FF> 杨金辉 </font></a>已收件,进入公司分捡</td>
</tr>
<tr class="AlternatingRow">
<td width="82">2011-01-12</td><td width="45">20:25</td>
<td align="left" width="339">快件离开<a href="#"><font color=#FF0000> 北京上地 </font></a>
,已发往<a href="#" ><font color=#FF0000> 北京 </font></a></td>
</tr>
<tr class="Row">
<td width="82">2011-01-12</td><td width="45">23:25</td>
<td align="left" width="339">快件到达<a href="#"><font color=#FF0000> 北京 </font></a>
,正在分捡中,上一站是<a href="#"><font color=#FF0000> 北京上地 </font></a></td>
</tr>
<tr class="AlternatingRow">
<td width="82">2011-01-12</td><td width="45">23:37</td>
<td align="left" width="339">快件离开<a href="#"><font color=#FF0000> 北京 </font></a>
,已发往<a href="#" ><font color=#FF0000> 天津 </font></a></td>
</tr>
<tr class="AlternatingRow">
<td width="82">2011-01-14</td><td width="45">17:17</td>
<td align="left" width="339"><a href="#"><font color=#FF0000> 北辰一部 </font></a>
<a href="#"><font color=#0000FF> 北辰一部 </font></a>正在派件</td>
</tr>
<tr class="Row">
<td width="82">2011-01-13</td><td width="45">21:44</td>
<td align="left" width="339">快件离开<a href="#" ><font color=#FF0000> 天津 </font></a>
,已发往<a href="#"><font color=#FF0000> 北辰一部 </font></a></td>
</tr>
</table>
下面是PHP代码部分:
<?php
$Info = array();
$content = file_get_contents("test.htmll"); //上面的代码是在test.html文件里的
$questionInfo = preg_replace('/[/r/t/n/s]*/is',"",$questionInfo);
$preg = "/(?:(?:<tr(?:[^/>]*)>)
(?:<td(?:[^/>]*)>([^/>]*)<//td>)
(?:<td(?:[^/>]*)>([^/>]*)<//td>)
(?:<td(?:[^/>]*)>([^>]*)<a(?:[^/>]*)><font(?:[^/>]*)>([^/>]*)<//font><//a>([^>]*)
<a(?:[^/>]*)><font(?:[^/>]*)>([^/>]*)<//font><//a>([^/>]*)<//td>)<//tr>)+?/is";
preg_match_all($preg,$content,$Info,PREG_SET_ORDER);
print_r($info);
PS:第一次写这种抓取规则,写的不好,各位看官要是有什么改进意见,还请指正!