使用simple_html_dom.php进行csv下载会创建一个额外的行

时间:2014-02-28 09:42:26

标签: php simple-html-dom export-to-csv

我正在使用一个名为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屏幕截图。

screen shot of my exported csv

1 个答案:

答案 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);