我正在使用一个名为simple_html_dom.php的热门插件,用以下代码将HTML导出为CSV:
<?php
include "simple_html_dom.php";
$html = file_get_html('http://siteurl.com');
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename=sample.csv');
$fp = fopen("php://output", "w");
foreach ($html->find('tr') as $element) {
$td = array();
foreach ($element->find('th') as $row) {
$td[] = $row->plaintext;
}
fputcsv($fp, $td);
$td = array();
foreach ($element->find('td') as $row) {
$td[] = $row->plaintext;
}
fputcsv($fp, $td);
}
fclose($fp);
?>
除了在每行之后插入一个空行外,一切正常。
可能是什么问题?
附上我的CSV屏幕截图。
答案 0 :(得分:1)
我猜你只有第一行有标题单元格...试图从每一行<th>
获取数据都不会返回任何内容,这解释了你得到的空行......
您可以简单地重新排列/更改您的代码...例如,用以下代码替换您的大循环:
$td = array();
foreach ($element->find('tr th') as $th) {
$td[] = $th->plaintext;
}
fputcsv($fp, $td);
foreach ($element->find('tr td') as $td) {
$td[] = $td->plaintext;
}
fputcsv($fp, $td);