0

0

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

php中文网

php中文网

发布时间:2016-06-21 08:58:44

|

1442人浏览过

|

来源于php中文网

原创

程序|网页

  转载请联系作者:Email: pengwuwang@21cn.com   darlingpeng@sina.com

  在工作中,经常需要对网页上的表格内容进行处理,但是,由于表格内容制作过程中的随意性,跨行跨列经常发生,所以我作了这几个函数,以获取表格的内容,程序中重要的地方已作了注解,所以在此不再重复说明,经过测试,非常成功.所以拿出来供大家共享.
//作者: 王朋武
//日期: 2005,3,31
//目的: 获取网页上(任意跨行跨列的)表格中的内容
function fun_proc_rowspan($l_str)
{
 $l_a = explode(" ", $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(" ", $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(" ", $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(" ", $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  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(" ", "", $l_str); //去掉
$l_str = eregi_replace(" ", "", $l_str); //去掉
$l_str = eregi_replace("", " ", $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(" ", $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



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
AngularJS教程
AngularJS教程

共24课时 | 3.7万人学习

CSS3实现按钮特效视频教程
CSS3实现按钮特效视频教程

共15课时 | 3.3万人学习

细说PHP第三季
细说PHP第三季

共58课时 | 11.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号