2013-05-31 25 views
2

數據形式的網站,我有以下網站: http://stationmeteo.meteorologic.net/metar/your-metar.php?icao=LFRS&day=070308提取使用PHP

我想從中提取數據。 我嘗試使用file_get_contents和一些正則表達式,但有些不起作用。

這是我試過的代碼:它給我不確定的偏移量爲0和1 如果我直接複製網頁的內容,$內容,而不是使用的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

當你使用'file_get_contents(...)',你有什麼獲得$內容? – dreamweiver

+0

因爲沒有匹配'00:00 01/05/2013'的時間戳,你沒有找到匹配項? – h2ooooooo

+0

對不起,我把日期設置錯了我的意思是,00:30 07/03/2008和01:30 07/03/2008 – maggiemh

回答

2

問題是,.+匹配除換行符以外的任何字符,並且您試圖匹配的文本中有換行符。

嘗試

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

(使用~作爲分隔符,這樣你就不必逃避所有這些斜線,順便說一句)

下一個問題是:爲什麼我沒有拿到這個將網頁內容直接複製到$content時出現問題?那麼,當網頁被渲染時,所有空格都被歸一化爲一個空格,將網頁源代碼中出現的\n(按Ctrl-U查看它)變成一個簡單的空間。並且.+與該空間匹配。

+0

完美運作。 Thx :) – maggiemh

+0

好吧,現在我明白了發生了什麼。 和thx爲〜分隔符提示。 (真的很有幫助) – maggiemh