在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行。:)我想是吧。