请问谁有把html的table转换成php数组的啊?

比如我有这样的一个Table:

 1<table border="1" height="161" width="493">
 2<tr>
 3<td colspan="2" rowspan="2"><div align="center">a</div></td>
 4<td colspan="2"><div align="center">b</div></td>
 5<td rowspan="2"><div align="center">e</div></td>
 6<td rowspan="2"><div align="center">f</div></td>
 7</tr>
 8<tr>
 9<td><div align="center">c</div></td>
10<td><div align="center">d</div></td>
11</tr>
12<tr>
13<td rowspan="2"><div align="center">g</div></td>
14<td rowspan="2"><div align="center">h</div></td>
15<td><div align="center">i</div></td>
16<td><div align="center">j</div></td>
17<td><div align="center">k</div></td>
18<td><div align="center">l</div></td>
19</tr>
20<tr>
21<td><div align="center">m</div></td>
22<td><div align="center">n</div></td>
23<td><div align="center">o</div></td>
24<td><div align="center">p</div></td>
25</tr>
26<tr>
27<td colspan="2"><div align="center">q</div></td>
28<td><div align="center">r</div></td>
29<td><div align="center">s</div></td>
30<td><div align="center">t</div></td>
31<td><div align="center">u</div></td>
32</tr>
33</table>

如何转换成
("", "", "", "", "", "")
("a", "", "b", "", "e", "f")
("", "", "c", "d", "", "" )
("g", "h", "i", "j", "k", "l")
("", "", "m", "n", "o", "p")
("q", "", "r", "s", "t", "u")

最好有代码、说明。如果分不够可以再加!!!
先谢谢各位了!
---------------------------------------------------------------

呵呵,用了比较复杂的算法

1   
2$html = '
a
b
e
f
c
d
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
``` ';

// 整理数据
$html = eregi_replace(">[\r\n\t ]+<","><",$html); // 去掉多余的空字符
eregi("

 1&lt;table[^&gt;]*&amp;gt;(.+)",$html,$regs); // 提取表体   
 2$ar = split("",$regs[1]); // 按行分解成数组   
 3array_pop($ar); // 去处尾部多余的元素   
 4for($i=0;$i&lt;count($ar);$i++) $ar[$i]='split("&amp;lt;/td' {=""&gt;",$ar[$i]); // 分裂各列   
 5array_pop($ar[$i]); // 去处尾部多余的元素   
 6}   
 7for($i=0;$i&lt;count($ar);$i++) $t="array();" for($j="0;$j&amp;lt;count($ar[$j]);$j++)" if(eregi("colspan.*([0-9]+)",$ar[$i][$j],$regs))="" while(--$regs[1]="" {="" 如果跨列=""&gt; 0) // 补足差额   
 8array_push($t,"");   
 9$ar[$i] = array_merge(array_slice($ar[$i],0,$j+1),$t,array_splice($ar[$i],$j+1));   
10}   
11if(eregi("rowspan.*([0-9]+)",$ar[$i][$j],$regs)) { // 如果跨行   
12if(! isset($t)) // 跨列、跨行不同时存在   
13$t = array("");   
14else   
15array_push($t,"");   
16$k = $regs[1];   
17while(--$k &amp;gt; 0) // 补足差额   
18$ar[$i+$k] = array_merge(array_slice($ar[$i+$k],0,$j),$t,array_splice($ar[$i+$k],$j));   
19}   
20unset($t);   
21}   
22}   
23  
24// 除去html标记   
25for($i=0;$i&lt;count($ar);$i++) $ar[$i][$j]="strip_tags($ar[$i][$j]);" &lt;="" &lt;pre="" ```="" array_push($ar[$i],"");="" count($ar[0]))="" for($j="0;$j&lt;count($ar[$i]);$j++)" while(count($ar[$i])="" {="" }="" 保证各行的列相同,这里有点牵强="">   

print_r($ar);

1</count($ar);$i++)></count($ar);$i++)></count($ar);$i++)></table[^>
Published At
Categories with Web编程
comments powered by Disqus