如何将具有HTML标记的PHP变量解析为CSV?

时间:2015-03-24 04:47:39

标签: php html csv

我有一个数据库字段,其值包含HTML表(基本上是一个wysiwyg字段)。所以一个好的$ example变量将是下表。

<table class='product_data'>
<tr class='odd'>
    <td>2002</td>
    <td>2006</td>
    <td>ACURA</td>
</tr>
<tr class='odd'>
    <td>2002</td>
    <td>2006</td>
    <td>HONDA</td>
</tr>
<tr class='odd'>
    <td>2002</td>
    <td>2006</td>
    <td>TOYOTA</td>
</tr>
</table>

我使用PHP从数据库中读取数据。目标是将此数据库字段解析为csv文件。在此示例中,有3行。所以输出csv文件应该是:

 2002-2006,ACURA
 2002-2006,HONDA
 2002-2006,TOYOTA

有没有一种可以在PHP中完成的简单方法?我确定没有任何东西在我头顶。

1 个答案:

答案 0 :(得分:0)

下载http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

将下载的文件放在与以下文件相同的文件夹中

parser.php

<?php
include "simple_html_dom.php";
$table = "<table class='product_data'>
    <tr class='odd'>
        <td>2002</td>
        <td>2006</td>
        <td>ACURA</td>
    </tr>
    <tr class='odd'>
        <td>2002</td>
        <td>2006</td>
        <td>HONDA</td>
    </tr>
    <tr class='odd'>
        <td>2002</td>
        <td>2006</td>
        <td>TOYOTA</td>
    </tr>
</table>";

$html = str_get_html($table);


header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename=yourfilename.csv');

$fp = fopen("php://output", "w");

foreach ($html->find('tr') as $element) {

    $td = array();
    foreach ($element->find('td') as $row) {
        $td [] = $row->plaintext;
    }
    fputcsv($fp, $td);
}


fclose($fp);