php网页表格制作,PHP获取网页上任意表格中内容的通用程序的制作

function fun_proc_rowspan($l_str)

{

$l_a = explode("\n", $l_str);

for($i=count($l_a)-1; $i>=0; $i--) {

$l_str = trim($l_a[$i]);

if(empty($l_str)) continue;

$l_str = eregi_replace(" $l_b = explode("", $l_str); //如有n个,则分成(n+1)个组,最开始一项为空.

for($j=0; $j 如 +----+----+----+----+----+----+----+

+----+----+----+----+----+----+----+此一行保存7格, 前6格都有rowspan=2

+-----------------------------+----+此一行只保存2格

+----------------------------------+此一行只保存1格

*/

$l_str = trim($l_b[$j]);

if(eregi("rowspan", $l_str)) {

$rowspan = preg_replace("/^ $rowcont = preg_replace("/^(.+)/", "\\1", $l_str);

$l_a = fun_add_row_td($l_a, $i, $j, $rowspan, $rowcont);

$l_str = implode("\n", $l_a);

return $l_str;

}

}//end of for j

}//end of for i

return $l_str;

}

function fun_add_row_td($l_a, $r, $l, $add_n, $add_cont) //l_a是数组, r是插入的开始行,l是开始的列, add_n是跨多少行, add_cont是加的内容

{

for($i=$r; $i if($i == $r) {

$l_str = eregi_replace(" $l_b = explode("", $l_str);

$l_c = "";

for($j=1; $j if($j == $l) $l_c .= eregi_replace("rowspan", "", $l_b[$j]); //去掉rowspan

else $l_c .= $l_b[$j];

}

$l_a[$i] = $l_c;

continue;

}

$l_str = eregi_replace("分隔符

$l_b = explode("", $l_str); //以分组

$l_c = "";

for($j=1; $j if($j == $l) {

$l_c .= "".$add_cont."";

}

$l_c .= $l_b[$j];

}//end of for j

$l_a[$i] = $l_c; //更新后的新内容

}//end of for i

return $l_a;

}

function fun_proc_colspan($l_str)

{

$l_a = explode("\n", $l_str);

for($i=0; $i $l_str = trim($l_a[$i]);

if(empty($l_str)) continue;

$l_str = eregi_replace(" $l_b = explode("", $l_str); //如有n个,则分成(n+1)个组,最开始一项为空.

for($j=1; $j $l_str = trim($l_b[$j]);

if(eregi(" $colspan = preg_replace("/^ $colcont = preg_replace("/^(.+)/", "\\1", $l_str);

$l_a = fun_add_col_td($l_a, $i, $j, $colspan, $colcont);

$l_str = implode("\n", $l_a);

return $l_str;

}

}//end of for j

}//end of for i

return $l_str;

}

function fun_add_col_td($l_a, $r, $l, $add_n, $add_cont) //l_a是数组, r是插入的开始行,l是开始的列, add_n是跨多少列, add_cont是加的内容

{

$l_str = eregi_replace("分隔符

$l_b = explode("", $l_str); //以分组

$l_c = "";

for($j=1; $j<=count($l_b); $j++) { //略过开始的空项,从1开始

if($j == $l) {

$l_c .= eregi_replace("colspan", "", $l_b[$j]); //去掉colspan

continue;

}

if($j == $l+1) {

for($k=0; $k $l_c .= "".$add_cont."";

}

$l_c .= $l_b[$j];

}//end of for j

$l_a[$r] = $l_c; //更新后的新内容

return $l_a;

}

$l_str = file_get_contents("test.htm"); //获取网页内容

$l_str = eregi_replace(".*$l_str = eregi_replace(".*", "", $l_str);

$l_str = eregi_replace("\r", "", $l_str); //去掉\r

$l_str = eregi_replace("\n", "", $l_str); //去掉\n

$l_str = eregi_replace("", "\n", $l_str); //使表格的一行成为一行数据

$l_str = strip_tags($l_str, ""); //只保留,HTML表记

while(eregi("while(eregi("/至此,表格处理已完成.

$l_str = eregi_replace("", "

", $l_str); //给每一格之间加上标记

$l_str = strip_tags($l_str, "

");

$l_a = explode("\n", $l_str);

for($i=0; $i $l_str = trim($l_a[$i]);

if(empty($l_str)) continue;

$l_b = explode("

", $l_str);

foreach($l_b as $val) {

echo $val." "; //表格每列内容间加空格

}

echo "

"; //表格的一行显示为一行

}

//附测试用例和测试结果:

/***********测试用表格*************************************************************

Untitled Document

1

2

3

4

5

6

7

a1

22

a2

a3

b1

b2

b3

b4

33

c1

c2

c3

c4

44

d1

d2

d3

d4

e1

e2

e3

e4

e5

f1

f2

f3

g1

g2

h1

i1

i2

i3

i4

i5

j1

j2

j3

j4

k1

k2

l1

l2

m1

m2

m3

*********************************************************************************/

/**************操作结果的表格***********************************************

1 2 3 4 5 6 7

a1 22 a2 a3 a3a3a3

b1 22b2 b2b3 b4 33

c1 22c2 c3 c4 44 33

d1 22d2 d3 d4 4433

e1 22e2 e3 e4 e5 33

f1 22f2 f3 f3f3f3

g1 22g2 g2g2g2g2

h1 h1h1h1h1h1h1

i1 i2 i2i2i3 i4 i5

j1 j2 j2j2j3 j4 j4

k1 k1k1k1k1k1k2

l1 l1l1l1l1l1l2

m1 m1m1m1m1m2 m3

******************************************************************/

测试用表:

1234567

a122a2a3

b1b2b3b433

c1c2c3c444

d1d2d3d4

e1e2e3e4e5

f1f2f3

g1g2

h1

i1i2i3i4i5

j1j2j3j4

k1k2

l1l2

m1m2m3

测试结果的表:

1234567

a122a2a3a3a3a3

b122b2b2b3b433

c122c2c3c44433

d122d2d3d44433

e122e2e3e4e533

f122f2f3f3f3f3

g122g2g2g2g2g2

h1h1h1h1h1h1h1

i1i2i2i2i3i4i5

j1j2j2j2j3j4j4

k1k1k1k1k1k1k2

l1l1l1l1l1l1l2

m1m1m1m1m1m2m3

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值