在php中将txt文件转换为带分隔符的数组

在php中将txt文件转换为带分隔符的数组,php,arrays,file,text,split,Php,Arrays,File,Text,Split,我的ips.txt文件包含以下内容: radie1230: 116.79.254.131 Y_O_L_O: 122.149.157.42 midgetman63: 121.121.14.101, 124.112.115.69, 114.182.51.1, 114.118.55.131, 111.21.22.156 kypero: 121.211.61.118, 117.117.117.46, 121.214.109.247, 111.219.37.75 lythorous: 111.161.22

我的
ips.txt
文件包含以下内容:

radie1230: 116.79.254.131
Y_O_L_O: 122.149.157.42
midgetman63: 121.121.14.101, 124.112.115.69, 114.182.51.1, 114.118.55.131, 111.21.22.156
kypero: 121.211.61.118, 117.117.117.46, 121.214.109.247, 111.219.37.75
lythorous: 111.161.225.214, 12.111.184.71, 1.112.201.113, 11.137.214.184, 1.115.21.117, 12.115.241.212, 11.117.116.217
此列表左侧包含用户名,由右侧IP的
分隔。IP由
分隔

创建以下输出的实现是什么

Array (
    [midgetman63] => Array
        (
            [0] => 121.121.14.101
            [1] => 124.112.115.69
            [2] => 114.182.51.1
            [3] => 114.118.55.131
            [4] => 111.21.22.156
        )
)
也许是这个

<?php
$output = array();
$search = 'something';
$lines = file('file.txt');
foreach($lines as $line) {
  if(strpos($line, $search) !== false) {
    $d = explode(':', $line); 
    $s = explode(',', $d[1]); 
    foreach $s as $i { array_push($output, $i); }
  }
}

print_r($output);

?>

也许是这个

<?php
$output = array();
$search = 'something';
$lines = file('file.txt');
foreach($lines as $line) {
  if(strpos($line, $search) !== false) {
    $d = explode(':', $line); 
    $s = explode(',', $d[1]); 
    foreach $s as $i { array_push($output, $i); }
  }
}

print_r($output);

?>

试试这个:

$dataFromFile = file('ips.txt');
$dataFromFile = array_map('trim', $dataFromFile);
$result = array();
foreach ($dataFromFile as $line) {
    list($user, $ips) = explode(':', $line, 2);
    $arrayOfIPs = explode(',', $ips);
    $result[trim($user)] = array_map('trim', $arrayOfIPs);
}

var_dump($result);
试试这个:

$dataFromFile = file('ips.txt');
$dataFromFile = array_map('trim', $dataFromFile);
$result = array();
foreach ($dataFromFile as $line) {
    list($user, $ips) = explode(':', $line, 2);
    $arrayOfIPs = explode(',', $ips);
    $result[trim($user)] = array_map('trim', $arrayOfIPs);
}

var_dump($result);

如果文本文件末尾没有空格,这应该是可行的。 祝你好运

$text = file_get_contents("ipsontext.txt");
$array = explode("\n",$text);
$finally_array = array();
foreach ($array as $key => $value) {
  $this_key = explode(":",$value);
  $this_values = explode(",",$this_key[1]);
   foreach($this_values as $tv) {
       $finally_array[$this_key[0]][] = $tv;
     }  
 }
 var_dump($finally_array);

如果文本文件末尾没有空格,这应该是可行的。 祝你好运

$text = file_get_contents("ipsontext.txt");
$array = explode("\n",$text);
$finally_array = array();
foreach ($array as $key => $value) {
  $this_key = explode(":",$value);
  $this_values = explode(",",$this_key[1]);
   foreach($this_values as $tv) {
       $finally_array[$this_key[0]][] = $tv;
     }  
 }
 var_dump($finally_array);

你试过什么吗?你可以从尝试开始。逐行读取文件,用
分隔符分解每一行,然后使用结果数组的第一个索引作为键,例如
midgetman63
,并用
分隔符分解第二个索引(即1)。。您就快完成了..您可以找到您正在搜索的文本所在的行,然后$d=explode(“:”,$thatdata)$s=爆炸(',',$d);foreach$s作为$i{array_push($output,$i);}是的,我试过了,但没走多远,结果是空数组。但现在我在使用下面的Gonzalo Bahamondez的方法,效果很好。谢谢你的帮助。你试过什么了吗?你可以从尝试开始。逐行读取文件,用
分隔符分解每一行,然后使用结果数组的第一个索引作为键,例如
midgetman63
,并用
分隔符分解第二个索引(即1)。。您就快完成了..您可以找到您正在搜索的文本所在的行,然后$d=explode(“:”,$thatdata)$s=爆炸(',',$d);foreach$s作为$i{array_push($output,$i);}是的,我试过了,但没走多远,结果是空数组。但现在我在使用下面的Gonzalo Bahamondez的方法,效果很好。谢谢你的帮助。或者是的,这是一个比我更好的答案。我只是在想,你不应该改变
explode(“:”,$line)
分解(“:”,$line,2),所以IPv6 IP仍然可以工作?我正在使用下面的Gonzalo Bahamondez的方法,它工作得很好。谢谢你的帮助。或者是的,这是一个比我更好的答案。我只是在想,你不应该改变
explode(“:”,$line)
分解(“:”,$line,2),所以IPv6 IP仍然可以工作?我正在使用下面的Gonzalo Bahamondez的方法,它工作得很好。谢谢你的帮助。我正在使用下面的Gonzalo Bahamondez的方法,效果很好。谢谢你的帮助。我正在使用下面的Gonzalo Bahamondez的方法,效果很好。谢谢你的帮助。没问题,但我在做我的答案之前没有读过mkjasinski的答案,她的方法更快,代码更短2行。:)我猜。没问题,但我在做我的答案之前没有读过mkjasinski的答案,她的方法更快,代码更短2行。:)我想是吧。