2014-02-06 3 views
0

Я уже разместил эту ветку, но так и не объяснил ее очень хорошо, поэтому я удалил ее и переписал.Разделить HTML-элементы tr в массив PHP

Мой скрипт php отправляет запрос cURL на веб-сайт, который затем выводит таблицу HTML, после чего я буду использовать ту таблицу, в которой есть 7 элементов TR, каждый элемент TR будет содержать в себе 6 элементов TD.

Это означает, что HTML-таблица технически уже закодирована на странице, что я хочу сделать, это разделить каждый TR на отдельный массив PHP, с TD, доступным через этот ключ.

Так, например:

Table
-- tr1
----td
----td
----td
----td
----td
----td
-- tr2
----td
----td
----td
----td
----td
----td

Я тогда быть в состоянии сделать: echo $TRArray[1][3]
Это будет эхо 'тд', потому что это значение 2 TD элемента на первом массиве TR

Я не уверен, объясняю ли я это очень хорошо, но это то, что я хочу, чтобы иметь возможность делать

Любая помощь будет принята с благодарностью!

+0

Можете ли вы дать нам одну сплошную линию данных, получаемых с веб-сайта? Должен ли он выглядеть примерно так данные данные ...... ? – TimSPQR

+0

@TimSPQR да, это точно так. У TDs есть классы, но TRs этого не делают. –

ответ

2

Убедитесь, что PHP включена поддержка PHP-дом:

$export = array(); 
$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($html); 
libxml_clear_errors(); 

$xpath = new DOMXPath($dom); 

$tr_no = 0; 
foreach($xpath->evaluate('//tr') as $sel){ 
    $export[$tr_no] = array(); 
    $td_no = 0; 
    foreach($sel->childNodes as $td){ 
     if(strtolower($td->tagName) == 'td'){ 
      $innerHTML = ''; 
      foreach ($td->childNodes as $child){ 
       $innerHTML .= $td->ownerDocument->saveHTML($child); 
      } 
      $export[$tr_no][$td_no] = $innerHTML; 
      $td_no++; 
     } 
    } 
    $tr_no++; 
} 

var_dump($export); 
+0

спасибо, я дам вам попробовать, когда я нахожусь на своем ноутбуке :-) –

+0

работал отлично, спасибо! –

+0

@MarkEriksson Не могли бы вы задать ответ в качестве правильного ответа? Если это сработает для вас. – Zac

Смежные вопросы