2014-12-04 3 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), а затем цена под (число в конце каждой строки $ х раз для целей тестирования)

Как я могу преобразовать этот массив, чтобы каждой строке (адресу, диапазону, цене) назначалось правильное название, чтобы я мог искать и сопоставлять данные?

+0

просто из интереса Javascript может быть и речи для вас? – Pogrindis

+0

Я бы хотел использовать php на самом деле, javascript - это еще один язык для меня, и tbh я не эксперт по php, поэтому разветвление, вероятно, путало бы меня больше. – James

+0

Я могу оценить, что просто JS определенно будет проще манипулировать DOM. Посмотрим на это. – Pogrindis

ответ

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

+0

вам нужна помощь с этой частью ? Если вы часто посещаете сайт mycounciltax, вы также можете сохранить эти данные в локальной базе данных и выполнить поиск там. Это будет быстрее и надежнее. И время от времени вы можете синхронизировать локальные данные с данными mycounciltax – cornelb

+0

. У каждого объекта есть другая налоговая группа. В идеале я хотел бы, чтобы свойство находило свою собственную группу и цену (следовательно, используя этот код), а не вручную вводило группу для каждого свойства. Вот почему я использовал этот сайт, так как он перечисляет все полосы для почтового индекса. Мне просто нужно было найти правильный адрес, чтобы найти группу и цену за нее. Я могу заставить его показать количество перечисленных свойств (0-23), но попытка отображения фактических данных для каждой строки оказывается затруднительной. – James

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);