$nomadspage = "http://www.nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/";
$html = file_get_contents($nomadspage);
$count = preg_match_all('/<a href="([^"]+)">[^<]*<\/a>/i', $html, $files);
unset($files[1]); //deletes repeat array from preg_match
$files = $files[0]; //deletes container array from preg_match
foreach ($files as $key => $value) {
if (substr($value, 0, 3) !== "gfs") {
unset($files[$key]);
}
}
var_dump($files);
HTTPディレクトリのファイル名を持つ配列があります。これらのファイル名をフィルタリングして、gfs
の3文字で始まらないファイルがすべてアレイから削除されるようにします。ただし、何らかの理由でsubstr()
機能が動作しません。ファイル名から部分文字列を引き出すことはありません。したがって、if
ステートメントは機能しません。なぜこれが起こっているのか、それを修正する方法は誰にも分かりません。substr()配列要素でPHPが機能しない
'$ files'配列のサブセットを教えてもらえますか? – forrestmid
'preg_match_all()'の問題でなければなりません。同様に、あなたはあなたが考える結果を得ていない。とにかくHTMLを解析するときは、[DOMDocument](http://php.net/manual/en/class.domdocument.php)を使うべきでしょう。さらに良いことに、NOAA情報はJSONレスポンスとして利用できると確信しています。 – PHPglue