1

(DOMDocument / DOMXPathを使用して)行ではなくでhtmlテーブルtdをどのように解析しますか?テーブルの列に基づいてtd要素を解析することを意味します。どのtrにあるかではありませんか?

4

1 に答える 1

2

HTML テーブルは、列ではなく行でグループ化されます。行を反復し、行を適切な配列に割り当て、キーで同期するのが最善の策です。

例:

<?php

$html = <<<HTML
<table id="target">
    <tr>
        <td>Col1</td>
        <td>Col2</td>
        <td>Col3</td>
    </tr>
    <tr>
        <td>Col1</td>
        <td>Col2</td>
        <td>Col3</td>
    </tr>
    <tr>
        <td>Col1</td>
        <td>Col2</td>
        <td>Col3</td>
    </tr>
    <tr>
        <td>Col1</td>
        <td>Col2</td>
        <td>Col3</td>
    </tr>
</table>
HTML;

$document = new DOMDocument();
$document->loadHTML($html);

$table = $document->getElementById("target");
$tr_list = $table->getElementsByTagName("tr");

$tr_count = 0;
$columns = array();
foreach ($tr_list as $tr) {
    /** @var $tr DOMElement */
    $td_list = $tr->getElementsByTagName("td");
    $tr_count++;
    $td_count = 0;
    foreach ($td_list as $td) {
        $columns[$tr_count][$td_count] = $td;
        $td_count++;
    }

}

print_r($columns);
于 2012-06-25T16:15:50.080 に答える