Philip McQuitty
Philip McQuitty

Reputation: 1077

Convert HTML table to CSV via PHP

I am trying to pull each td element from the html table below and import each element into its own cell in a CSV file.

Here are the two html tables:

<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>

I have written code that goes through the tables and pulls the td elements:

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

So how can I extract these elements into a CSV file? In Excel I want it to look like this with each td element in its own cell, starting a new row for each html table:

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

Upvotes: 0

Views: 3207

Answers (2)

Manoj Saini
Manoj Saini

Reputation: 108

There is a library exist for this. Goto http://phpexcel.codeplex.com/. Download the zip file and in example you would find 17html.php try this code. I hope this will help.

Upvotes: 2

JakeParis
JakeParis

Reputation: 11210

CSV means Comma Separated Values. Thus, as you echo out the data (after running it through your function to strip the <td> tags), put commas in between each piece of data (cell), and a new line where you want the next line to start.

So to use your example above, it should look like this:

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,

Keep in mind that when you echo this, you shouldn't have any other html tags or anything.

Upvotes: 0

Related Questions