Extrae el valor de la celda de la tabla según el valor de otras celdas

Archivo HTML: http://www.arifoorum.com/test/html.htm

Obtuve este contenido html con la biblioteca 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]=> ... } } 

Salida completa: http://www.arifoorum.com/test/test.php

¿Cómo obtengo cierto elemento de esa matriz?

Por ejemplo: digamos que quiero valor donde mõõdikud = 01 y name 2 = külm (que debería ser 72,114).

Gracias

Esto podría ser útil para otros usuarios, así que hice una pequeña función que obtiene el valor de una celda de una tabla, en función de los valores de otras células (condiciones):

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

Utiliza DomDocument porque la pregunta no fue etiquetada como simplehtmldom

@OP: en tu caso lo usarías como:

 $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', ));