2013-04-03 82 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中問題的編輯錯誤,與您發佈時一樣。 –