В настоящее время я могу получить массив с помощью синтаксического анализатора DOM в PHP, но может ли кто-нибудь из 1 научить меня, как это сделать?
Вот мое кодирование для получения данных таблицы html.
<?php
$DOM = new DOMDocument();
$DOM->loadHTML($htmlContent);
$Header = $DOM->getElementsByTagName('th');
//#Get header name of the table
foreach ($Header as $NodeHeader) {
$Header=$NodeHeader->c14n();
$thDom= new DOMDocument();
$thDom->loadHtml($Header);
$aDataTableHeaderHtml[] = $NodeHeader->textContent;
}
print_r($aDataTableHeaderHtml);
$datacell = [];
$trs = $DOM->getElementsByTagName('tr'); //Get table row
foreach ($trs as $tr) {
$trHtml = $tr->c14n();
$trDom = new DOMDocument();
$trDom->loadHTML($trHtml);
$td = $trDom->getElementsByTagName('td'); //Get table data
$array = [];
foreach ($td as $cells) {
$array[] = $cells->textContent;
}
$datacell[] = $array;
}
print_r($datacell);
Это формат таблицы html, который я получил с веб-сайта. Ниже несколько строк, но я просто показываю часть из них.
<table class="Stats-table">
<tr class='TblHdr'>
<th><b></b></td>
<th><b>USD</b></th>
<th><b>GBP</b></th>
<th><b>EUR</b></th>
<th><b>JPY100</b></th>
<th><b>CHF</b></th>
<th><b>AUD</b></th>
<th><b>CAD</b></th>
<th><b>SGD</b></th>
<th><b>HKD100</b></th>
</tr>
<tr>
<td>3/2/2020</td>
<td>4.1155</td>
<td>5.4152</td>
<td>4.5606</td>
<td>3.7915</td>
<td>4.2694</td>
<td>2.7547</td>
<td>3.1079</td>
<td>3.0082</td>
<td>52.9935</td>
</tr>
<tr>
<td>4/2/2020</td>
<td>4.1170</td>
<td>5.3521</td>
<td>4.5524</td>
<td>3.7877</td>
<td>4.2582</td>
<td>2.7644</td>
<td>3.0976</td>
<td>3.0031</td>
<td>52.9903</td>
</tr>
<tr>
Ниже приведен результат, полученный от анализатора DOM. Этот массив является результатом получения заголовка таблицы.
Array
(
[0] =>
[1] => USD
[2] => GBP
[3] => EUR
[4] => JPY100
[5] => CHF
[6] => AUD
[7] => CAD
[8] => SGD
[9] => HKD100
[10] =>
[11] => THB100
[12] => PHP100
[13] => TWD100
[14] => KRW100
[15] => IDR100
[16] => SAR100
[17] => SDR
[18] => CNY
[19] => BND
[20] =>
[21] => VND100
[22] => KHR100
[23] => NZD
[24] => MMK100
[25] => INR100
[26] => AED100
[27] => PKR100
[28] => NPR100
[29] => EGP
)
Массив ниже показывает данные строк.
Array
(
[0] => Array
(
)
[1] => Array
(
[0] => 3/2/2020
[1] => 4.1155
[2] => 5.4152
[3] => 4.5606
[4] => 3.7915
[5] => 4.2694
[6] => 2.7547
[7] => 3.1079
[8] => 3.0082
[9] => 52.9935
)
[2] => Array
(
[0] => 4/2/2020
[1] => 4.1170
[2] => 5.3521
[3] => 4.5524
[4] => 3.7877
[5] => 4.2582
[6] => 2.7644
[7] => 3.0976
[8] => 3.0031
[9] => 52.9903
)
[3] => Array
(
[0] => 5/2/2020
[1] => 4.1210
[2] => 5.3668
[3] => 4.5471
[4] => 3.7654
[5] => 4.2504
[6] => 2.7767
[7] => 3.1006
[8] => 2.9849
[9] => 53.0670
)
Я хочу, чтобы массив совпадал с правильным 1 .
Пример:
Array
(
[] => 3/2/2020
[USD] => 4.1155
[GBP] => 5.4152
[EUR] => 4.5606
[JPY100] => 3.7915
[CHF] => 4.2694
[AUD] => 2.7547
[CAD] => 3.1079
[SGD] => 3.0082
[KHKD100] => 52.9935
)