PHP将文本分解为数组

PHP将文本分解为数组,php,explode,Php,Explode,我正在尝试将仅国家/地区/代码列表的内容转换为数组。 为此,我尝试使用explode,但在\r\n、\r\n或\n\r上进行explode无效 有人知道他们在用什么吗? 我只需要国家名称和两个字母的代码。您的工作已经完成: 请考虑改用此页- 或者使用XML 因为它将更容易解析 要以编程方式执行此操作 $country_arr = []; $raw = file_get_contents("http://www.iso.org/iso/home/standards/country_codes/c

我正在尝试将仅国家/地区/代码列表的内容转换为数组。 为此,我尝试使用explode,但在\r\n、\r\n或\n\r上进行explode无效

有人知道他们在用什么吗?
我只需要国家名称和两个字母的代码。

您的工作已经完成:


请考虑改用此页-

或者使用XML

因为它将更容易解析

要以编程方式执行此操作

$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];
}

如果只需要执行一次,请将文本复制到记事本中,搜索并替换任何不必要的字符,然后执行分解


如果您需要按需按代码执行,那么就用php编写相同的搜索和替换操作。

我猜您正在使用php

preg_match('/^([\w\s]+\w)\s+(\w{2})\s+\w{3}\s+\d{3}\s*$/', $contents, $matches);
您将获得一个包含所需信息的数组。

在您的网站上,以及版本

正在分析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);
$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);
正在分析XML版本:

$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);
$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);

获取页面中数据的最佳方法是使用简单的dom解析器。这张桌子很容易拿,而且很方便contents@DevZer0它不是一个HTML表。它是标签中的文本文件。DOM解析器在这里帮不上忙。非常感谢,这正是我所需要的!我将在9分钟内感谢您。这些是仅链接的答案。你可以理解为什么这更多的是一个评论而不是一个答案。你也可以添加代码来帮助你的文章增加实例,但在目前的状态下,这并不是一个很好的问题答案,更值得一提。@Patrick,这就是为什么你接受的答案是-3这更好:我假设你想保持你的列表最新????事实上,你可以通过数百种方式编制一份一次性清单,键入清单,在excel中编制清单,用水彩绘制清单。。。从博客上复制它的乐趣何在!!!这应该是一个评论。问题是如何将文本分解为数组。请记住,问答必须有助于未来visitors@Patrick关于重新发明轮子。如果另一个国家被发现怎么办?在堆栈溢出时打开另一个线程以了解如何更新itI之前,您的列表将始终过期。我看不出从文本文件解析代码而不是复制现成的数组如何神奇地使数组保持最新。复杂的情况下,我无法使用记事本搜索/替换功能