昨天晚上心血来潮,由于寝室的厕所灯坏了,所以需要报修,我们学校有网络报修的服务,因此就通过网络报修了寝室的厕所灯,然后,突然想要看看这些报修的人里面有没有自己认识的人。随后我便花了一整晚的时间在写PHP的采集程序,做要是为了采集报修系统里面的简单的报修人信息,但是当晚没有能够完成,于是就睡觉去了。
正则表达式练习:一次心血来潮的采集事件

第二天一大早起床便兴匆匆的又开始了写这段采集的小程序,昨天网上已经将正则表达式写好了,虽然不是很完美的正则表达式,不过毕竟刚开始都是从笨拙到精练的,还是需要慢慢来的。一整个早上都卡在了数据库插入数据上,一直没能够成功。原本以为会是正则表达式部分花费时间多的,但是却没想到是数据库插入数据部分的代码卡住了。不过后来发现只是一个低级的错误,因为填写的数据库名称错误了而已。

以下是本次编写的采集代码,其实我应该写一个类的,那样可以增加代码重用,提高效率,一直采用这种面向过程的方式编程不是好习惯啊,等毕业答辩后开始认真的写几个常用的类,还要写一个真正纯自己编写的网站程序。哈哈,希望能够做到。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width initial-scale=1.0, user-scalable=yes">
<meta http-equiv="refresh" content="10;url=http://localhost/index.php?id=<?php echo $_GET['id'] + 1; ?>">
<title>正则表达式练习-采集结果</title>
<body>
<?php
mysql_connect("localhost","root","");
mysql_select_db("hfut");
    $startid = $_GET['id'] * 100 + 1;
    $endid = $_GET['id'] * 100 + 101;
for($i = $startid; $i < $endid; $i++){
    $getcontents = file_get_contents('网址?id='.$i);
    if(preg_match("/报修编号:([0-9]+)/",$getcontents,$baoxiubianhao))
    {
        preg_match("/当前状态:(.*)</",$getcontents,$dangqianzhuangtai);
        preg_match("/故障位置:(.*)&nbsp;&nbsp;&nbsp;&nbsp;/",$getcontents,$guzhangweizhi);
        preg_match("/报修ip:([0-9.]*)</",$getcontents,$baoxiuip);
        preg_match("/报 修 人:(.{0,15})</",$getcontents,$baoxiuren);
        preg_match("/故障类型:(.*)</",$getcontents,$guzhangleixing);
        preg_match("/故障描述:(.*)</",$getcontents,$guzhangmiaoshu);
        preg_match("/报修时间:((.{0,15})(\n)?(.{0,5}))</",$getcontents,$baoxiushijian);
        preg_match("/预约日期:(.*)</",$getcontents,$yuyueshijian);
            $sql = "insert into repair (baoxiubianhao,dangqianzhuangtai,guzhangweizhi,baoxiuip,baoxiuren,guzhangleixing,guzhangmiaoshu,baoxiushijian,yuyueshijian) values ('$baoxiubianhao[1]','$dangqianzhuangtai[1]','$guzhangweizhi[1]','$baoxiuip[1]','$baoxiuren[1]','$guzhangleixing[1]','$guzhangmiaoshu[1]','$baoxiushijian[1]','$yuyueshijian[1]')";
            if(mysql_query($sql)){
                echo "成功!</ br>";
            }else{
                echo "失败!</ br>";
            }
    }else{
        echo "该ID没有数据!</ br>";
    }
}
?>
</body>
</html>

代码写好后,花了一整个下午采集数据,第一次采集的时候出现了算法错误,当i越大的时候采集的数量就会越小,最后变为0。不过后来发现了问题后就进行了修改,现在的算法是正确可行的了。通过这一次的练习,我对正则表达式的了解又更进一步了,每一次进步都是迈向成功的新里程碑。


发表评论

电子邮件地址不会被公开。 必填项已用*标注