比如我有这样的一个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<table[^>]*&gt;(.+)",$html,$regs); // 提取表体
2$ar = split("",$regs[1]); // 按行分解成数组
3array_pop($ar); // 去处尾部多余的元素
4for($i=0;$i<count($ar);$i++) $ar[$i]='split("&lt;/td' {="">",$ar[$i]); // 分裂各列
5array_pop($ar[$i]); // 去处尾部多余的元素
6}
7for($i=0;$i<count($ar);$i++) $t="array();" for($j="0;$j&lt;count($ar[$j]);$j++)" if(eregi("colspan.*([0-9]+)",$ar[$i][$j],$regs))="" while(--$regs[1]="" {="" 如果跨列=""> 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 &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<count($ar);$i++) $ar[$i][$j]="strip_tags($ar[$i][$j]);" <="" <pre="" ```="" array_push($ar[$i],"");="" count($ar[0]))="" for($j="0;$j<count($ar[$i]);$j++)" while(count($ar[$i])="" {="" }="" 保证各行的列相同,这里有点牵强="">
print_r($ar);
1</count($ar);$i++)></count($ar);$i++)></count($ar);$i++)></table[^>