Извлечь значение ячейки из таблицы на основе другого значения ячейки

HTML-файл: http://www.arifoorum.com/test/html.htm

Я получил это html-содержимое с помощью библиотеки simplehtmldom:

array(66) { [0]=> array(14) { [0]=> string(4) "Item" [1]=> string(11) "Date, time:" [2]=> string(8) "mõõdikud" [3]=> string(6) "Name 2" [4]=> string(6) "Name 3" [5]=> string(9) "Meter ID:" [6]=> string(6) "V_HeEn" [7]=> string(6) "U_HeEn" [8]=> string(3) "V_V" [9]=> string(3) "U_V" [10]=> string(6) "V_InTe" [11]=> string(6) "U_InTe" [12]=> string(6) "V_OuTe" [13]=> string(6) "U_OuTe" } [1]=> array(14) { [0]=> string(1) "1" [1]=> string(19) "24.01.2013 22:23:33" [2]=> string(9) "Meter 002" [3]=> string(6) " " [4]=> string(6) " " [5]=> string(8) "40380040" [6]=> string(6) " " [7]=> string(6) " " [8]=> string(6) " " [9]=> string(6) " " [10]=> string(6) " " [11]=> string(6) " " [12]=> string(6) " " [13]=> string(6) " " } [2]=> ... } } 

Полная версия: http://www.arifoorum.com/test/test.php

Как получить определенный элемент из этого массива?

Например: скажем, я хочу значение, где mõõdikud = 01 и name 2 = külm (это должно быть 72.114).

благодаря

Это может быть полезно для других пользователей, поэтому я сделал небольшую функцию, которая получает значение ячейки из таблицы на основе значений других ячеек (условий):

 function getCellValue(DOMElement $table, $cellName = null, array $conditions = array()){ // get all table rows $trs = $table->getElementsByTagName('tr'); // assume first TR is the table header $head = $trs->item(0); // find cell names and their index $keys = array(); foreach($head->childNodes as $th) if(!($th instanceof DomText)) $keys[] = trim($th->nodeValue); if($invalidKeys = array_diff(array_keys($conditions), $keys)) throw new Exception(sprintf('Non-extistent key(s) in table: ', implode(', ', $invalidKeys))); // find the row that meets all conditions $targetRow = null; foreach($table->childNodes as $tr){ // internal counter because we can't rely on DOM index $idx = 0; foreach($tr->childNodes as $td){ if($td instanceof DomText) continue; $value = trim($td->nodeValue); // check if all conditions match if(array_key_exists($keys[$idx], $conditions)) $targetRow = ($value != $conditions[$keys[$idx]]) ? null : $tr; $idx++; } // stop if we found a match if($targetRow) break; } if(!$targetRow) throw new Exception('No row matches your conditions'); // build an array with row cells $values = array(); $idx = 0; foreach($targetRow->childNodes as $td) if(!($td instanceof DomText)) $values[$keys[$idx++]] = trim($td->nodeValue); // return the cell value if a specific cell was requested if($cellName !== null) return isset($values[$cellName]) ? $values[$cellName] : null; // otherwise return all values from the matched row return $values; } 

Он использует DomDocument потому что вопрос не был помечен как simplehtmldom

@OP: в вашем случае вы будете использовать его как:

 $html = file_get_contents('http://www.arifoorum.com/test/html.htm'); $dom = new DomDocument(); $doc->preserveWhiteSpace = false; $dom->loadHtml($html); $table = $dom->getElementsByTagName('table')->item(0); print getCellValue($table, 'V_V', array( 'mõõdikud' => '01', 'Name 2' => 'külm', ));