2014-12-04 172 views
0

我從另一個網站上抓取一張表,並設法抓取數據,並將其作爲數組返回,這很好。PHP返回一個數組

我用於循環訪問數組並打印數據和數據顯示。有三個項目在「行」 -

地址,樂隊,價格

我試圖返回數組分配給這些頭,這樣我可以搜索地址,並將其匹配到當前的地址,但我似乎無法找到正確的代碼。

include ("simple_html_dom.php"); 
// Dump contents (without tags) from HTML 
$html = file_get_html('http://www.mycounciltax.org.uk/results?postcode=b757ep&search=Search'); 
$ret = $html->find("td"); 
$totalret = count($ret); 
for ($x = 0; $x <= $totalret; $x++) { 
    echo "$ret[$x] $x <br>"; 
} 

這就是代碼,並將其返回

90, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 0 
D 1 
£1294 2 
92, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 3 
D 4 
£1294 5 
94, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 6 
D 7 
£1294 8 
96, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 9 
D 10 
£1294 11 

首先你的地址,然後樂隊(d),然後下面的價格(每行的末尾數字是$ X剛爲測試目的)

我將如何去轉換該數組,以便每行(地址,樂隊,價格)被分配它是正確的標題,以便我可以搜索和匹配數據?

+0

只是出於興趣的JavaScript爲你的問題? – Pogrindis 2014-12-04 10:42:09

+0

我想用php真的,JavaScript是另一種語言給我和tbh我不是PHP專家,所以分支可能會混淆我更多哈。 – James 2014-12-04 10:47:38

+0

我可以理解,只有JS肯定會更容易進行DOM操作。請看看這個。 – Pogrindis 2014-12-04 10:51:17

回答

0

下面的代碼將返回類似

Array (
    [0] => Array 
     (
      [address] => 90, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 
      [band] => D 
      [price] => £1294 
     ) 
    [1] => Array 
     (
      [address] => 92, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP 
      [band] => D 
      [price] => £1294 
     ) 


$html = file_get_html('http://www.mycounciltax.org.uk/results?postcode=b757ep&search=Search'); 
$tds = $html->find("td"); 

$searchTerm = '92, REDDICAP HEATH ROAD, SUTTON COLDFIELD, WEST MIDLANDS B75 7EP'; 

$searchResults = array(); 

$properties = array(); 
$current = 0; 


foreach ($tds as $td) { 
    $td = trim(strip_tags(trim($td))); 
    // or $td = trim($td->innertext()); 
    $properties[(int)($current/3)][] = $td; 
    $current++; 
} 

$keys = array('address', 'band', 'price'); 
foreach ($properties as &$property) { 
    $property = array_combine($keys, $property); 
    if ($property['address'] == $searchTerm) { 
     $searchResults[] = $property; 
    } 
} 

print_r($properties); 
print_r($searchResults); 
+0

這太棒了,謝謝..我現在已經得到它列出的屬性,只需要找到一種方法來掃描屬性,看看是否有地址,然後顯示樂隊和價格 – James 2014-12-04 11:18:32

+0

你需要幫助該部分?如果您經常訪問mycounciltax網站,您也可以將這些數據保存在本地數據庫中並在那裏搜索。它會更快,更可靠。有時,您可以將本地數據與mycounciltax的數據同步。 – cornelb 2014-12-04 11:21:07

+0

每個屬性都有不同的市政稅區。理想情況下,我希望物業找到自己的樂隊和價格(因此使用此代碼),而不是爲每個物業手動輸入樂隊。這就是爲什麼我使用這個網站,因爲它列出了郵政編碼的所有樂隊。我只需要找到正確的地址找到它的樂隊和價格。我可以得到它顯示列出的屬性數量(0-23),但試圖顯示每條線的實際數據是困難的哈。 – James 2014-12-04 11:23:55

0

這樣的事情?

$array = array(); 
$arrayIndex = 0; 
$col = 0; 
foreach($ret as $item) { 
    $array[$arrayIndex][] = $item; 
    $col ++; 
    if ($col === 2) { 
     $arrayIndex ++; 
     $col = 0; 
    } 
} 
0

嘗試清潔換行符:

$html = str_replace("\n",'',$html);