使用php从网站中提取数据

时间:2013-05-31 12:02:04

标签: php regex

我有以下网站: http://stationmeteo.meteorologic.net/metar/your-metar.php?icao=LFRS&day=070308

我想从中提取数据。 我尝试使用file_get_contents和一些正则表达式,但有些东西不起作用。

这是我尝试过的代码:

$content=file_get_contents('http://stationmeteo.meteorologic.net/metar/your-metar.php? icao=LFMN&day=010513');

preg_match('/00\:30 07\/03\/2008(.+)01\:30 07\/03\/2008/',$content,$m);
echo $m[0];
echo $m[1];

它给了我未定义的偏移量0和1。 如果我将网页内容直接复制到$ content而不是使用file_get_contents,那么它可以正常工作。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

问题是.+匹配除换行符之外的任何字符,并且您尝试匹配的文本中有换行符。

尝试

preg_match('~00:30 07/03/2008(.+)01:30 07/03/2008~s',$content,$m);

(使用~作为分隔符,顺便说一下你不必转义所有斜杠)

接下来的问题是:为什么在将网页内容直接复制到$content时,我不会遇到此问题?好吧,当渲染网页时,所有空格都标准化为单个空格,将页面源代码中存在的\n(按Ctrl-U查看)转换为一个简单的空间。 .+匹配该空格。