将字符串中的IP列表转换为数组

时间:2017-07-13 07:39:33

标签: php arrays html5

我有一个测试文件,其中包含服务器上新行中的IP列表我正在使用phpseclib来获取文件,该文件已经以字符串的形式返回给我。我想将每个ip分别存储在一个数组中。

我已经使用过了

$arr = print_r(explode(" ",$str))

但它将所有数据推送到$ arr [0];

Array ( [0] => 10.54.58.1 10.54.58.27 10.54.58.28 10.54.58.31 10.54.58.32 10.54.58.33 10.54.58.36 10.54.58.45 10.54.58.60 10.54.58.67 10.54.58.80 10.54.58.86 10.54.58.89 10.54.58.97 10.54.58.98 10.54.58.99 ) 

当我尝试将它们显式复制并存储到字符串中然后使用explode时,我感觉很好。

Array ( [0] => 10.54.58.1 [1] => 10.54.58.27 [2] => 10.54.58.28 [3] => 10.54.58.31 [4] => 10.54.58.32 [5] => 10.54.58.33 [6] => 10.54.58.36 [7] => 10.54.58.45 [8] => 10.54.58.60 [9] => 10.54.58.67 [10] => 10.54.58.80 [11] => 10.54.58.86 [12] => 10.54.58.89 [13] => 10.54.58.97 [14] => 10.54.58.98 [15] => 10.54.58.99 )

任何人都可以告诉我这是什么问题,我甚至尝试删除我正在获取的最后一个额外空间

3 个答案:

答案 0 :(得分:2)

如果没有原始字符串,这就是猜测工作,但可能是每行IP吗?如果是这样,您需要在换行符\n上展开。

如果您echo "A\nB\nC"; A B C之间的将显示为空格,但这些是换行符。如果您查看页面的来源,您会看到它们列出:

A  
B  
C

因此你需要爆炸:

$arr = print_r(explode("\n",$str));

答案 1 :(得分:0)

你错在哪里:

$arr = print_r(explode(" ",$str))

print_r()函数为PHP.net says

  

打印有关变量的人类可读信息

你只想要变量,而不是它的相关信息。只需做

$arr = explode(" ", $str);

答案 2 :(得分:-1)

$ips = $dataArray[0];

$ipArray = explode(" ",$ips);

在安全方面,使用array_key_exists(0,$dataArray)检查索引是否存在。