当前位置:Gxlcms > PHP教程 > 正则采集问题,求解,在线等

正则采集问题,求解,在线等

时间:2021-07-01 10:21:17 帮助过:2人阅读

目标页:http://www.weather.com.cn/weather/101070101.shtml

查看其网页源码,想得到425行的数据,即“今天是2013年10月16日 星期三 农历九月十二”和621行“沈阳天气预报 (2013-10-16 18:00发布)" 和641行~765行之间主要数据。用图表示一下,见下图:


另外我自己写的一条规则,试着取了下这样的数据"沈阳天气预报 (2013-10-16
11:00发布)"但输入后为空数组,求指导!多谢!


回复讨论(解决方案)

1

$s=file_get_contents('http://www.weather.com.cn/weather/101070101.shtml');preg_match('/

\s+(.+)\s+<\!--today5-->/s',$s,$m);echo $m[1];



2
 preg_match('/\s+

\s+(.+?)\s+/s',$s,$m);echo $m[1];



3 不知道你想要得到什么格式的数据。

一直都感觉正则好高端

1

$s=file_get_contents('http://www.weather.com.cn/weather/101070101.shtml');preg_match('/

\s+(.+)\s+<\!--today5-->/s',$s,$m);echo $m[1];



2
 preg_match('/\s+

\s+(.+?)\s+/s',$s,$m);echo $m[1];



3 不知道你想要得到什么格式的数据。

就是按日期,顺序取到各项值就行,文本就行,比如:星期四 白天晴 高温16摄氏度 西南风微风 夜间晴 低温3摄氏度 西南风微风(换行)...如此把这块数据都取出来

如下源码:

          
16日星期三 白天 高温 12℃ 东北风 微风
夜间 低温 -2℃ 东北风 微风

只想要(取得3天数据):16日星期三 白天:晴 12℃ 东北风微风 夜间:晴 -2℃ 东北风微风

另外发现一个小问题(见下图),不知道应该怎样处理一下?

另外发现一个小问题(见下图),不知道应该怎样处理一下?

echo preg_replace('/ \s+/s','',$result[1]);

3

preg_match_all('/(.+)<\/table>/isU',$s,$m); echo join('
',array_map('strip_tags',array_slice($m[1],0,3)));

哦,写错了。第一个应该是 echo preg_replace('/ \s+/s','',$result2[1]);

问题3
这两行执行后,还有个小缺陷,有很多不必要的换行存在,能弄掉吗?(查看源代码如下)

今天是2013年10月17日 星期四 农历九月十三  沈阳天气预报 (2013-10-1708:00发布)                      17日星期四            白天                                                                                晴                                          高温 16℃                                                                    西南风                                                                    微风                                                          夜间                                                                                晴                                          低温 3℃                                                                    西南风                                                                    微风                                              
18日星期五 白天 晴 高温 18℃ 西南风 3-4级 夜间 多云 低温 6℃ 西南风 3-4级
19日星期六 白天 阵雨 高温 15℃ 西南风 3-4级 夜间 多云 低温 4℃ 西南风 微风

echo preg_replace('/\s+/s','',join('
',array_map('strip_tags',array_slice($m[1],0,3))));

echo preg_replace('/\s+/s','',join('
',array_map('strip_tags',array_slice($m[1],0,3))));

换行是去掉了,但全边一起了

沈阳天气预报 (2013-10-1711:00发布)17日星期四白天晴高温16℃西南风微风夜间晴低温3℃西南风微风
18日星期五白天晴高温18℃西南风3-4级夜间多云低温6℃西南风3-4级
19日星期六白天阵雨高温15℃西南风3-4级夜间多云低温4℃西南风微风

有办法让换行变成一个空格吗(现有的
保留)?

要是不好实现就算了,这样也可以了。说什么好呢?太感谢了

echo preg_replace('/\s+/s',' ',join('
',array_map('strip_tags',array_slice($m[1],0,3))));

人气教程排行