php 正则提取网页中指定的信息并且整理成想要的格式

2024-12-27 23:10:22
推荐回答(1个)
回答1:

$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 );

运行结果截图: