使用 JSDOM 将 HTML table 转换为 PHP 数组
convert HTML table to PHP Array using JSDOM
我想将 HTML 这个 table 转换成 PHP 数组
到目前为止我已经尝试过:
<?php
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$html = curl('https://www.ortax.org/ortax/?mod=kursbi');
$data = array();
foreach((@DOMDocument::loadHTML($html))->getElementsByTagName("td") as $tag){
$data[trim($tag->textContent)]=trim($tag->nextSibling->nextSibling->textContent);
}
echo '<pre>';
print_r($data);
echo '</pre>';
?>
我得到的结果:
此错误:
Notice: Trying to get property 'textContent' of non-object in D:\XAMPP\htdocs\curl\curl.php on line 16
和这个数组:
Array
(
[] => Error Etax-40001
[Planning SPT Tahunan: PPh 22, 23, 25 Lebih Bayar] =>
[Kewajiban NIK Untuk Faktur Pajak] =>
[Billing DJBC] =>
[Bagaimana Cara Mengatasi E-Bupot PPh 23/26 Yang Error?] =>
[Error Etax-40001] =>
[Dolar Australia [ AUD ]] => 1
[1] => 0.62
[10850.85] => 10741.47
[10741.47] => 10796.16
[10796.16] =>
)
我想要的结果是,我只想要数字数组中的 table 内容并消除上面的错误:
Array
(
[0] => Array
(
[0] => Dolar Australia [ AUD ]
[1] => 1
[2] => 10850.85
[3] => 10741.47
[4] => 10796.16
)
)
这是一个棘手的解决方案,但这应该可行。
从您获得的结果来看,您似乎正在 select 访问页面中存在的所有 <td>
,您将获得不需要的数据。如果可能的话,如果您只从您需要的特定 table 中选择 select 会更好。
$table = @DOMDocument::loadHTML($html)->getElementsByTagName("table")->item(1);
$i=-1;
foreach($table->getElementsByTagName('tr') as $row){
$j = 0;
foreach($row->getElementsByTagName('td') as $tag){
//echo $tag->textContent."<br>";
$data[$i][$j] = $tag->textContent;
$j++;
}
$i++;
}
我想将 HTML 这个 table 转换成 PHP 数组
到目前为止我已经尝试过:
<?php
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$html = curl('https://www.ortax.org/ortax/?mod=kursbi');
$data = array();
foreach((@DOMDocument::loadHTML($html))->getElementsByTagName("td") as $tag){
$data[trim($tag->textContent)]=trim($tag->nextSibling->nextSibling->textContent);
}
echo '<pre>';
print_r($data);
echo '</pre>';
?>
我得到的结果: 此错误:
Notice: Trying to get property 'textContent' of non-object in D:\XAMPP\htdocs\curl\curl.php on line 16
和这个数组:
Array
(
[] => Error Etax-40001
[Planning SPT Tahunan: PPh 22, 23, 25 Lebih Bayar] =>
[Kewajiban NIK Untuk Faktur Pajak] =>
[Billing DJBC] =>
[Bagaimana Cara Mengatasi E-Bupot PPh 23/26 Yang Error?] =>
[Error Etax-40001] =>
[Dolar Australia [ AUD ]] => 1
[1] => 0.62
[10850.85] => 10741.47
[10741.47] => 10796.16
[10796.16] =>
)
我想要的结果是,我只想要数字数组中的 table 内容并消除上面的错误:
Array
(
[0] => Array
(
[0] => Dolar Australia [ AUD ]
[1] => 1
[2] => 10850.85
[3] => 10741.47
[4] => 10796.16
)
)
这是一个棘手的解决方案,但这应该可行。
从您获得的结果来看,您似乎正在 select 访问页面中存在的所有 <td>
,您将获得不需要的数据。如果可能的话,如果您只从您需要的特定 table 中选择 select 会更好。
$table = @DOMDocument::loadHTML($html)->getElementsByTagName("table")->item(1);
$i=-1;
foreach($table->getElementsByTagName('tr') as $row){
$j = 0;
foreach($row->getElementsByTagName('td') as $tag){
//echo $tag->textContent."<br>";
$data[$i][$j] = $tag->textContent;
$j++;
}
$i++;
}