-3

このリンクの内容(国/コード リストのみ) を配列に変換しようとしています。そうするために、explode() を使用してみましたが、\r、\n、\r\n、または \n\r での爆発は機能しません。

彼らが何を使っているか知っている人はいますか?国名と 2 文字のコードだけが必要です。

4

5 に答える 5

2

あなたの仕事はすでに行われています:

ISO 3166 国コードの PHP 配列

于 2013-08-13T13:03:24.210 に答える
1

ウェブサイト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);
于 2013-08-13T13:06:08.993 に答える
0

これを一度だけ行う必要がある場合は、テキストをメモ帳にコピーし、不要な文字を検索して置き換えてから、explode() を実行します。

コードでオンデマンドで実行する必要がある場合は、同じ検索と置換アクションを php でプログラムします。

于 2013-08-13T13:04:16.637 に答える
0

PHPを使っていると思います。

preg_match('/^([\w\s]+\w)\s+(\w{2})\s+\w{3}\s+\d{3}\s*$/', $contents, $matches);

必要な情報を含む配列を取得します。

于 2013-08-13T13:05:33.507 に答える
-1

代わりにこのページを使用することを検討してください - 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];
}
于 2013-08-13T13:04:01.063 に答える