$Table = '
课程性质 | 课程号 | 课程名称 | 考试类型 | 学时 | 学分 | 成绩类型 | 期末成绩 | 总评成绩 |
专业核心课 | 1091123 | 软件工程 | 考试 | 51 | 2.5 | 期末考试 | 89 | 95 |
学科基础课 | 1091134 | C++程序设计 | 考试 | 51 | 2.5 | 期末考试 | 87 | 86 |
'; //你所谓的部分网页源内容, 我这里是赋值给一个变量, 实际中, 你怎么来, 你自己写
/*过滤下多余的换行和空格*/
$Table = preg_replace('/\s{2,}/', '', $Table);
/*正则提取出每一行先*/
preg_match_all('/
(([\s\S](?))*)<\/tr>/is', $Table, $Tr);
/*得到每一行(也就是每一个科目的成绩的一个数组), 数组值是td单元格html代码, 还不行, 还需要进一步匹配数据*/
$ChengJiArray = $Tr[1];
/*设置一个变量, 用于储存总共有多少学科, 初始赋值一个空数组*/
$XueKeArray = array();
/*遍历匹配出来的表格行数组*/
foreach( $ChengJiArray as $Value ) {
preg_match_all('/]*>([^<]*)<\/td>/is', $Value, $Td); //匹配每个单元格中的数据 $Data = $Td[1]; //等到数据集合 /*构建一个记录各个项目的数组*/ $XiangMuArray = array( 'name' => $Data[2], 'type' => $Data[6], 'fenshu' => $Data[7], 'zongfenshu' => $Data[8]); /*给最后的学科数组赋值*/ $XueKeArray[] = $XiangMuArray; } /*清空不需要的变量和数组*/ unset( $Table, $Tr, $ChengJiArray, $Value, $Td, $Data, $XiangMuArray ); /*最后打印一下结果数组用于测试, 具体应用你自己写*/ print_r( $XueKeArray );
运行结果截图:
|