我有以下网站: 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];
它给了我 undefined offset 0 和 1。 如果我直接将网页内容复制到 $content 而不是使用 file_get_contents ,则效果很好。
我错过了什么?
最佳答案
问题在于 .+
匹配除换行符之外的任何字符,并且您尝试匹配的文本中存在换行符。
尝试
preg_match('~00:30 07/03/2008(.+)01:30 07/03/2008~s',$content,$m);
(顺便说一句,使用 ~
作为分隔符,这样您就不必转义所有这些斜杠)
下一个问题是:为什么我将网页内容直接复制到$content
时不会出现这个问题?好吧,当呈现网页时,所有空白都会标准化为单个空格,从而将页面源代码中存在的 \n
(按 Ctrl-U 查看它)转换为一个简单的空格。 .+
匹配该空格。
关于php - 使用php从网站中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856813/