正则表达式练习:一次心血来潮的采集事件

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

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

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

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width initial-scale=1.0, user-scalable=yes">
  6. <meta http-equiv="refresh" content="10;url=http://localhost/index.php?id=<?php echo $_GET['id'] + 1; ?>">
  7. <title>正则表达式练习-采集结果</title>
  8. <body>
  9. <?php
  10. mysql_connect("localhost","root","");
  11. mysql_select_db("hfut");
  12.     $startid = $_GET['id'] * 100 + 1;
  13.     $endid = $_GET['id'] * 100 + 101;
  14. for($i = $startid$i < $endid$i++){
  15.     $getcontents = file_get_contents('网址?id='.$i);
  16.     if(preg_match("/报修编号:([0-9]+)/",$getcontents,$baoxiubianhao))
  17.     {
  18.         preg_match("/当前状态:(.*)</",$getcontents,$dangqianzhuangtai);
  19.         preg_match("/故障位置:(.*)&nbsp;&nbsp;&nbsp;&nbsp;/",$getcontents,$guzhangweizhi);
  20.         preg_match("/报修ip:([0-9.]*)</",$getcontents,$baoxiuip);
  21.         preg_match("/报 修 人:(.{0,15})</",$getcontents,$baoxiuren);
  22.         preg_match("/故障类型:(.*)</",$getcontents,$guzhangleixing);
  23.         preg_match("/故障描述:(.*)</",$getcontents,$guzhangmiaoshu);
  24.         preg_match("/报修时间:((.{0,15})(\n)?(.{0,5}))</",$getcontents,$baoxiushijian);
  25.         preg_match("/预约日期:(.*)</",$getcontents,$yuyueshijian);
  26.             $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]')";
  27.             if(mysql_query($sql)){
  28.                 echo "成功!</ br>";
  29.             }else{
  30.                 echo "失败!</ br>";
  31.             }
  32.     }else{
  33.         echo "该ID没有数据!</ br>";
  34.     }
  35. }
  36. ?>
  37. </body>
  38. </html>
代码写好后,花了一整个下午采集数据,第一次采集的时候出现了算法错误,当i越大的时候采集的数量就会越小,最后变为0。不过后来发现了问题后就进行了修改,现在的算法是正确可行的了。通过这一次的练习,我对正则表达式的了解又更进一步了,每一次进步都是迈向成功的新里程碑。