我有以下网站: 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,那么它可以正常工作。
我错过了什么?
答案 0 :(得分:2)
问题是.+
匹配除换行符之外的任何字符,并且您尝试匹配的文本中有换行符。
尝试
preg_match('~00:30 07/03/2008(.+)01:30 07/03/2008~s',$content,$m);
(使用~
作为分隔符,顺便说一下你不必转义所有斜杠)
接下来的问题是:为什么在将网页内容直接复制到$content
时,我不会遇到此问题?好吧,当渲染网页时,所有空格都标准化为单个空格,将页面源代码中存在的\n
(按Ctrl-U查看)转换为一个简单的空间。 .+
匹配该空格。