Как запарсить сложную таблицу на php?
Необходимо спарсить таблицу с colspan и rowspan в массив.
С rowspan = 2 получилось так
$dom->loadHTML($html);
$xpath = new DomXPath($dom);
$nodes = $xpath->query("//table/tr");
$arr = array();
$ids = array();
$lent = 5;
for ($j = 0;$j < $lent;$j++)
{
$ids[] = 1;
}
for ($i = 1;$i <= $nodes->length;$i++)
{
$ar = array();
for ($j = 0, $k = 0;$j < $lent;$j++)
{
if ($ids[$j] != 1)
{
$nn = $xpath->query("//table/tr[$i-1]/td[$j+1]");
$nnn = $xpath->query("//table/tr[0]/td[0]/@rowspan");
$ids[$j]--;
}
else
{
$k++;
$nn = $xpath->query("//table/tr[$i]/td[$k]");
$nnn = $xpath->query("//table/tr[$i]/td[$k]/@rowspan");
}
if (strlen($nnn->item(0)->nodeValue) != 0) $ids[$j] = (int)$nnn->item(0)->nodeValue;
$ar[] = $nn->item(0)->nodeValue; //." - (".$nnn->item(0)->nodeValue.")";
}
array_push($arr, $ar);
}
Когда rowspan больше двух или есть colspan, то код бесполезен :(
Как спарсить допустим такую таблицу
<table>
<tr>
<td rowspan='3'>A</td>
<td>B</td>
<td colspan='2'>C</td>
</tr>
<tr>
<td rowspan='3'>D</td>
<td colspan='2'>E</td>
</tr>
<tr>
<td>G</td>
<td>F</td>
</tr>
</table>
В такой вид
<table>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
<td>C</td>
</tr>
<tr>
<td>A</td>
<td>D</td>
<td>E</td>
<td>E</td>
</tr>
<tr>
<td>A</td>
<td>D</td>
<td>G</td>
<td>F</td>
</tr>
<tr>
<td></td>
<td>D</td>
<td></td>
<td></td>
</tr>
</table>

