2

次の Web サイトがあります: 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 が表示されます。file_get_contents を使用する代わりに Web ページのコンテンツを $content に直接コピーすると、問題なく動作します。

私は何が欠けていますか?

4

1 に答える 1

2

問題は、.+改行以外のすべての文字に一致し、一致させようとしているテキストに改行文字があることです。

試す

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

~ちなみに、これらすべてのスラッシュをエスケープする必要がないように、区切り文字として使用します)

次の質問は、Web ページのコンテンツを に直接コピーすると、この問題が発生しないのはなぜ$contentですか? Web ページがレンダリングされると、すべての空白は 1 つのスペースに正規化さ\nれ、ページのソース コード (表示するには Ctrl-U を押す) に存在する が単純なスペースに変わります。そして.+、その空間にマッチします。

于 2013-05-31T12:12:30.963 に答える