【问题标题】:Convert HTML table to CSV via PHP通过 PHP 将 HTML 表格转换为 CSV
【发布时间】:2014-02-20 04:08:17
【问题描述】:

我正在尝试从下面的 html 表中提取每个 td 元素,并将每个元素导入到 CSV 文件中自己的单元格中。

这是两个 html 表:

<table width="100%"  border="0" cellspacing="1" cellpadding="0" bgcolor="#006699">
<tr align="center" class="tableRow1Font">
<td width="7%">WAITLIST</td>
<td width="5%">91630</td>
<td width="11%">
ACCY <A HREF="http://www.gwu.edu/~bulletin/ugrad/accy.html#2001" target="_blank">2001</A>
</td>
<td width="5%">10</td>
<td width="16%">Intro Financial Accounting</td>
<td width="6%">3.00</td>
<td width="8%"> Zou, Y</td>
<td width="8%"><A HREF="http://www.gwu.edu/~map/building.cfm?BLDG=DUQUES" target="_blank"
>DUQUES</a> 251</td>
<td width="13%">TR<br>09:35AM - 10:50AM</td>
<td width="14%">
01/13/14 - 04/28/14
</td>
<td width="7%">
</td>
</tr>
</table>

<table width="100%"  border="0" cellspacing="1" cellpadding="0" bgcolor="#006699">
<tr align="center" class="tableRow2Font">
<td width="7%">WAITLIST</td>
<td width="5%">90003</td>
<td width="11%">
ACCY <A HREF="http://www.gwu.edu/~bulletin/ugrad/accy.html#2001" target="_blank">2001</A>
</td>
<td width="5%">11</td>
<td width="16%">Intro Financial Accounting</td>
<td width="6%">3.00</td>
<td width="8%"> Zou, Y</td>
<td width="8%"><A HREF="http://www.gwu.edu/~map/building.cfm?BLDG=DUQUES" target="_blank" 
>DUQUES</a> 254</td>
<td width="13%">TR<br>11:10AM - 12:25PM</td>
<td width="14%">
1/13/14 - 04/28/14
</td>
<td width="7%">                                     
</td>
</tr>
</table>

我已经编写了遍历表格并提取 td 元素的代码:

    foreach($html->find('tr[align=center] td') as $e)
    $str .= strip_tags($e->innertext) . ', ';
    echo $str;

那么如何将这些元素提取到 CSV 文件中呢?在 Excel 中,我希望它看起来像这样,每个 td 元素都在自己的单元格中,为每个 html 表开始一个新行:

WAITLIST  91630  ACCY 2001  10  Intro Financial Accounting  3.00  Zou, Y  DUQUES 251  TR  
WAITLIST  90003  ACCY 2001  11  Intro Financial Accounting  3.00  Zou, Y  DUQUES 251  TR

【问题讨论】:

标签: php html html-table export-to-csv


【解决方案1】:

为此存在一个库。转到http://phpexcel.codeplex.com/。下载 zip 文件,例如你会发现 17html.php 试试这个代码。我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    CSV 表示逗号分隔值。因此,当您回显数据时(在通过您的函数运行它以去除&lt;td&gt; 标记之后),在每条数据(单元格)和您希望下一行开始的新行之间放置逗号。

    所以要使用上面的示例,它应该如下所示:

    WAITLIST,91630,ACCY,2001,10,Intro Financial Accounting,3.00,Zou,Y,DUQUES,251,TR
    WAITLIST,90003,ACCY,2001,11,Intro Financial Accounting,3.00,Zou,Y,DUQUES,2,
    

    记住当你echo这个时,你不应该有任何其他的html标签或任何东西。

    【讨论】:

    • 还需要查看一些requirements。我在构建最简单的 CSV 时遇到了很多困难,结果发现大多数应用程序都太挑剔了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2016-08-17
    • 2011-02-07
    相关资源
    最近更新 更多