我是PHP DOM解析器的新手,这也是我第一次在Stack Overflow上提问。如果我给您造成了任何问题,对不起。
目前,我可以使用PHP中的DOM解析器来获取数组,但是在单独的数组中,有人可以教我如何做吗?
这是我获取HTML表格数据的编码。
$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);
<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
)
array_combine
将根据两个数组构造一个数组。第一个用于键,第二个用于值。
array_combine
输出:
$combined = array_combine($aDataTableHeaderHtml, $datacell[1]);
print_r($combined);
您那里存在一些空格问题,建议您在将值转储到数组之前对它们使用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
[HKD100] => 52.9935
)
。