欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

简单php采集网页部分文字问题,求指点,多谢

程序员文章站 2022-06-15 11:22:07
...
本帖最后由 hi_5461 于 2013-06-09 15:54:50 编辑 目标采集页面如下代码(示例页面,数据可能变化,但格式不会变化)
要求得到table中主要的4项数据:序 号、违法时间、违法地点、违法行为(即93行~130行之间的)
希望能给出详细一点的php代码。
交警查询
返回首页 / 设为首页 / 添加搜藏

在线查询 / 电子警察拍照信息

电子警察拍照信息 小型汽车 辽AQ007B
序 号 违法时间 违法地点 违法行为
1 2013-02-0711:16 沈阳市永安路 违停,驾驶人不在现场,妨碍其他车辆行人通行的
2 2013-03-0808:34 沈阳市三好街文萃路由南向北 通过路口遇停止信号时,停在停止线以内或路口内的
3 2013-03-2210:16 沈阳市三好街文萃路4号 违停,驾驶人不在现场,妨碍其他车辆行人通行的
4 2013-05-1413:53 沈阳市永安路 违停,驾驶人不在现场,妨碍其他车辆行人通行的
5 2013-05-3113:29 沈阳市五里河街 违停,驾驶人不在现场,妨碍其他车辆行人通行的
简单php采集网页部分文字问题,求指点,多谢

友情连接:

Copyright 2009 www.sygajj.gov.cn All Rights Reserved
版权所有:沈阳市交通警察支队 E-maill:webmaster@www.sygajj.gov.cn 辽ICP备07501079号 邮编:110003
站长统计

回复讨论(解决方案)

preg_match_all('#(\d+)\s*(.+)\s*(.+)\s*(.+)#isU',$s,$m);print_r($m);

preg_match_all('#(\d+)\s*(.+)\s*(.+)\s*(.+)#isU',$s,$m);print_r($m);

不用正则能实现吗?

你这个需求用正则是最方便的,还想怎么样。


preg_match_all('#(\d+)\s*(.+)\s*(.+)\s*(.+)#isU',$s,$m);print_r($m);

不用正则能实现吗?

正则在这种情况下使用是再好不过了

不知道我调用的对不对,但是输出结果中出现了我不想要的字符。

?Array(    [0] => Array        (            [0] => 1    	2013-02-0711:16    	 沈阳市永安路    	 违停,驾驶人不在现场,妨碍其他车辆行人通行的            [1] => 2    	2013-03-0808:34    	 沈阳市三好街文萃路由南向北    	 通过路口遇停止信号时,停在停止线以内或路口内的            [2] => 3    	2013-03-2210:16    	 沈阳市三好街文萃路4号    	 违停,驾驶人不在现场,妨碍其他车辆行人通行的            [3] => 4    	2013-05-1413:53    	 沈阳市永安路    	 违停,驾驶人不在现场,妨碍其他车辆行人通行的            [4] => 5    	2013-05-3113:29    	 沈阳市五里河街    	 违停,驾驶人不在现场,妨碍其他车辆行人通行的        )    [1] => Array        (            [0] => 1            [1] => 2            [2] => 3            [3] => 4            [4] => 5        )    [2] => Array        (            [0] => 2013-02-0711:16            [1] => 2013-03-0808:34            [2] => 2013-03-2210:16            [3] => 2013-05-1413:53            [4] => 2013-05-3113:29        )    [3] => Array        (            [0] =>  沈阳市永安路            [1] =>  沈阳市三好街文萃路由南向北            [2] =>  沈阳市三好街文萃路4号            [3] =>  沈阳市永安路            [4] =>  沈阳市五里河街        )    [4] => Array        (            [0] =>  违停,驾驶人不在现场,妨碍其他车辆行人通行的            [1] =>  通过路口遇停止信号时,停在停止线以内或路口内的            [2] =>  违停,驾驶人不在现场,妨碍其他车辆行人通行的            [3] =>  违停,驾驶人不在现场,妨碍其他车辆行人通行的            [4] =>  违停,驾驶人不在现场,妨碍其他车辆行人通行的        ))

我是这样调用的:
$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+)\s*(.+)\s*(.+)\s*(.+)#isU',$s,$m);print_r($m);

上面的结果中,从第3行至第25行,是我不想要的,而且第47行中出现了空格,这也不是我想要的,求解决代码,多谢!

$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+)\s*(.+)\s*(?: )*(.+)\s*(?: )*(.+)#isU',$s,$m);print_r($m);

$m 的 1 到 4 下标依次表示为 序号、时间、地点、内容

$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+)\s*(.+)\s*(?: )*(.+)\s*(?: )*(.+)#isU',$s,$m);print_r($m);

$m 的 1 到 4 下标依次表示为 序号、时间、地点、内容
试了一下,结果还是与原来的一样,空格字符没能过滤掉

preg_match_all('#