Как разобрать эту таблицу и извлечь из нее данные?

У меня есть следующая таблица: http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat

Это список обмена валюты, и мне нужно извлечь некоторые данные из него. На левой стороне таблицы указаны идентификационные номера валюты. Можно ли извлекать данные из указанных строк на основе их идентификаторов?

Например, из приведенной выше таблицы я хочу извлечь валюты с идентификаторами 978, 203 и 348.

Выход должен быть:

  • EUR 104,2182
  • 4,2747 чешских крон
  • HUF 38,7919

Изучив подобные примеры, я придумал следующее: http://pastebin.com/hFZs1H7C

Мне нужно как-то обнаружить идентификаторы и правильные значения печати … Я ноб, когда дело доходит до программирования, и мне нужна ваша помощь.

<?php $data = file_get_contents('http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat'); $dom = new domDocument; @$dom->loadHTML($data); $dom->preserveWhiteSpace = false; $tables = $dom->getElementsByTagName('table'); $rows = $tables->item(1)->getElementsByTagName('tr'); foreach ($rows as $row) { $cols = $row->getElementsByTagName('td'); foreach ($cols as $col) { echo $col; } } ?> 

Сбор данных таблицы как массива для последующего использования:

 $dom = new DomDocument; $dom->loadHtmlFile('http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat'); $xpath = new DomXPath($dom); // collect header names $headerNames = array(); foreach ($xpath->query('//table[@id="index:srednjiKursLista"]//th') as $node) { $headerNames[] = $node->nodeValue; } // collect data $data = array(); foreach ($xpath->query('//tbody[@id="index:srednjiKursLista:tbody_element"]/tr') as $node) { $rowData = array(); foreach ($xpath->query('td', $node) as $cell) { $rowData[] = $cell->nodeValue; } $data[] = array_combine($headerNames, $rowData); } print_r($data); 

Выход :

 Array ( [0] => Array ( [ŠIFRA VALUTE] => 978 [NAZIV ZEMLJE] => EMU [OZNAKA VALUTE] => EUR [VAŽI ZA] => 1 [SREDNJI KURS] => 104,2182 ) ... ) 

Пример использования:

 foreach ($data as $entry) { printf( '%s %s' . PHP_EOL, $entry['OZNAKA VALUTE'], $entry['SREDNJI KURS'] ); } 

Вы можете использовать функции xpath и domdocument PHP для извлечения определенных данных из html (или xml.)

 $src = new DOMDocument('1.0', 'utf-8'); $src->formatOutput = true; $src->preserveWhiteSpace = false; $content = file_get_contents("http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat"); @$src->loadHTML($content); $xpath = new DOMXPath($src); $values=$xpath->query('//td[ contains (@class, "tableCell") ]'); foreach($values as $value) { echo $value->nodeValue."<br />"; } 

это будет печатать innerHTML каждого элемента td с классом = «tableCell».