我正在尝试将此链接的内容(仅国家/代码列表)转换为数组。为此,我尝试使用explode(),但在\r、\n、\r\n 或\n\r 上爆炸不起作用。
有人知道他们在用什么吗?我只需要国家名称和 2 个字母代码。
您的工作已经完成:
在网站www.iso.org上,您有HTML、Text和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];
}