2013-04-03 53 views
0

我目前正在尝试增加我对PHP的知识,并且我已经为自己设置了一个抓取网站并将检索到的数据转换为JSON格式的任务。初学PHP的帮助 - 获取img src?

这里是我试图解析数据的一个例子行:

<tr> 
<td class="first"> 
    <img id="ctl00_Content_ctl00_rptInfo_ctl01_Image1" alt="Active" src="../../images/t1.jpg" style="border-width:0px;" />    
</td> 
<td > 
     Copenhagen 
</td> 
<td> 
     Sas 
</td> 
<td> 
    SK537 
</td> 
<td> 
    02 Apr 10:20 
</td> 
<td class="last"> 
    Delayed 11:30 
</td> 
</tr> 

这里是到目前为止我的PHP代码:

$raw = file_get_contents($url); 

$newlines = array("\t","\n","\r","\x20\x20","\0","\x0B"); 
$content = str_replace($newlines, "", html_entity_decode($raw)); 

$start = strpos($content,'<table width="100%" cellspacing="0" cellpadding="0" border="0" summary="Departure times detail information"'); 

$end = strpos($content,'</table>',$start) + 8; 

$table = substr($content,$start,$end-$start); 

preg_match_all("|<tr(.*)</tr>|U",$table,$rows); 

foreach ($rows[0] as $row){ 

    if ((strpos($row,'<th')===false)){ 

     preg_match_all("|<td(.*)</td>|U",$row,$cells); 

     $url_src = strip_tags($cells[0][0]); 

     $airport = strip_tags($cells[0][1]); 

     $airline = strip_tags($cells[0][2]); 

      $flightnum = strip_tags($cells[0][3]); 

      $schedule = strip_tags($cells[0][4]); 

      $status = strip_tags($cells[0][5]); 

     echo "{$url_src} - {$aiport} - {$airline} - {$flightnum} - {$schedule} - {$status}<br>\n"; 

    } 

} 

我现在可以正确地获得几乎所有的值除我似乎无法得到任何包含此单元格:

<td class="first"> 
    <img id="ctl00_Content_ctl00_rptInfo_ctl01_Image1" alt="Active" src="../../images/t1.jpg" style="border-width:0px;" />    
</td> 

谁能帮助我OU吨,我需要得到IMG串,我会感到很高兴能够在<td></td>这样的范围内得到整个字符串:

<img id="ctl00_Content_ctl00_rptInfo_ctl01_Image1" alt="Active" src="../../images/t1.jpg" style="border-width:0px;" />

但如果它能够解析出刚刚在src字符串会非常有帮助。

+0

你应该更喜欢一些HTML解析器像http://querypath.org/。它会让你的生活更轻松 –

+0

嗨,穆罕默德哈西布汗,我打算在晚些时候看看他们,现在我想在没有使用图书馆的情况下做到这一点。 –

+1

好的好运 –

回答

1

<img>标签是不开放可言,这就是为什么你的正则表达式将无法解析它。

尝试:

<td class="first"> 
    <img id="ctl00_Content_ctl00_rptInfo_ctl01_Image1" alt="Active" src="../../images/t1.jpg" style="border-width:0px;" />    
</td> 
+0

抱歉,这只是我HTML中问题的编辑错误,与您发布时一样。 –