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


How to parse a PHP variable that has HTML markup into CSV?

我有一个数据库字段,该字段的值包含HTML表(本质上是wysiwyg字段)。因此,一个好的$示例变量如下表所示。

<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中完成?我确信我脑子里除了什么都没有。

下载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);