このリンクの内容(国/コード リストのみ) を配列に変換しようとしています。そうするために、explode() を使用してみましたが、\r、\n、\r\n、または \n\r での爆発は機能しません。
彼らが何を使っているか知っている人はいますか?国名と 2 文字のコードだけが必要です。
あなたの仕事はすでに行われています:
ウェブサイトwww.iso.orgには、 HTML、テキスト、およびXMLバージョンがあります。
TXTバージョンの解析:
$a = [];
$d = file_get_contents('http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements_txt.htm');
foreach (explode("\r\n", trim($d)) as $i => $v) {
if (!$i) continue;
$v = explode(";", $v);
$a[$v[1]] = $v[0];
}
print_r($a);
XMLバージョンを解析中:
$a = [];
$d = file_get_contents('http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements_xml.htm');
foreach (simplexml_load_string($d) as $v) {
$a[ (string)$v->{'ISO_3166-1_Alpha-2_Code_element'} ] = (string)$v->{'ISO_3166-1_Country_name'};
}
print_r($a);
これを一度だけ行う必要がある場合は、テキストをメモ帳にコピーし、不要な文字を検索して置き換えてから、explode() を実行します。
コードでオンデマンドで実行する必要がある場合は、同じ検索と置換アクションを php でプログラムします。
PHPを使っていると思います。
preg_match('/^([\w\s]+\w)\s+(\w{2})\s+\w{3}\s+\d{3}\s*$/', $contents, $matches);
必要な情報を含む配列を取得します。
代わりにこのページを使用することを検討してください - http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements_txt.htm
または XML http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements_xml.htm
解析しやすくなるからです!
プログラムでそれを行うには...
$country_arr = [];
$raw = file_get_contents("http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements_txt.html");
$lines = explode("\n",$raw);
foreach ($lines as &$line) {
$bits = explode(";",$line);
$country_arr[$bits[0]] = $bits[1];
}