-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上,您有HTMLTextXML版本。

解析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 回答