1) 我有一个文本文件(converted.txt)和该内容的用户信息:
0 hbhenet pppoe D4:CA:6D:F1:5D:5A 10.23.0.254 8h1m36s
1 R moh@hj pppoe 00:27:22:16:3B:F2 10.17.0.253 8h1m36s
2 R omarmool@dr pppoe 68:72:51:3A:53:1B 10.17.0.251 8h1m36s
3 R admin@khr2 pppoe 24:A4:3C:9F:83:10 10.17.0.252 8h1m36s
4 R yas@ahmed.m pppoe 24:A4:3C:E6:DD:3E 10.17.0.250 8h1m36s
5 R hus@ahmed.m pppoe 44:D9:E7:DA:32:95 10.16.0.246 8h1m36s
2) 我在我的PHP中所做的是:
$file="converted.txt";
$fopen = fopen($file, "r");
$fread = fread($fopen,filesize($file));
fclose($fopen);
$remove = "\n";
$split = explode($remove, $fread);
$array[] = NULL;
$tab = "\t";
foreach ($split as $string)
{
$row = explode($tab, $string);
array_push($array,$row);
}
echo "<pre>";
print_r($array);
echo "</pre>";
3) 输出如下:
Array
(
[0] =>
[1] => Array
(
[0] => 0 hbhenet pppoe D4:CA:6D:F1:5D:5A 10.23.0.254 8h1m36s
)
[2] => Array
(
[0] => 1 R moh@hj pppoe 00:27:22:16:3B:F2 10.17.0.253 8h1m36s
)
[3] => Array
(
[0] => 2 R omarmool@dr pppoe 68:72:51:3A:53:1B 10.17.0.251 8h1m36s
)
[4] => Array
(
[0] => 3 R admin@khr2 pppoe 24:A4:3C:9F:83:10 10.17.0.252 8h1m36s
)
[5] => Array
(
[0] => 4 R yas@ahmed.m pppoe 24:A4:3C:E6:DD:3E 10.17.0.250 8h1m36s
)
[6] => Array
(
[0] => 5 R hus@ahmed.m pppoe 44:D9:E7:DA:32:95 10.16.0.246 8h1m36s
)
)
4) 但我想要的是:
阵列(
[0] => Array
(
[0] => Array
(
[0] => 0
[1] =>
[2] => hbhenet
[3] => pppoe
[4] => D4:CA:6D:F1:5D:5A
[5] => 10.23.0.254
[6] => 8h1m36s
)
[1] => Array
(
[0] => 1
[1] => R
[2] => moh@hj
[3] => pppoe
[4] => 00:27:22:16:3B:F2
[5] => 10.17.0.253
[6] => 8h1m36s
)
[2] => Array
(
[0] => 2
[1] => R
[2] => omarmool@dr
[3] => pppoe
[4] => 68:72:51:3A:53:1B
[5] => 10.17.0.251
[6] => 8h1m36s
)
[3] => Array
(
[0] => 3
[1] => R
[2] => admin@khr2
[3] => pppoe
[4] => 24:A4:3C:9F:83:10
[5] => 10.17.0.252
[6] => 8h1m36s
)
[4] => Array
(
[0] => 4
[1] => R
[2] => yas@ahmed.m
[3] => pppoe
[4] => 24:A4:3C:E6:DD:3E
[5] => 10.17.0.250
[6] => 8h1m36s
)
[5] => Array
(
[0] => 5
[1] => R
[2] => hus@ahmed.m
[3] => pppoe
[4] => 44:D9:E7:DA:32:95
[5] => 10.16.0.246
[6] => 8h1m36s
)
)
)
任何想法? 提前谢谢。
答案 0 :(得分:3)
我创建了一个名为myfile.txt
的文件: -
0 hbhenet pppoe D4:CA:6D:F1:5D:5A 10.23.0.254 8h1m36s
1 R moh@hj pppoe 00:27:22:16:3B:F2 10.17.0.253 8h1m36s
2 R omarmool@dr pppoe 68:72:51:3A:53:1B 10.17.0.251 8h1m36s
3 R admin@khr2 pppoe 24:A4:3C:9F:83:10 10.17.0.252 8h1m36s
4 R yas@ahmed.m pppoe 24:A4:3C:E6:DD:3E 10.17.0.250 8h1m36s
5 R hus@ahmed.m pppoe 44:D9:E7:DA:32:95 10.16.0.246 8h1m36s
现在我已应用以下代码: -
<?php
$array = explode("\n", file_get_contents('myfile.txt'));
echo "<pre/>";print_r($array);
输出为: -
Array
(
[0] => 0 hbhenet pppoe D4:CA:6D:F1:5D:5A 10.23.0.254 8h1m36s
[1] => 1 R moh@hj pppoe 00:27:22:16:3B:F2 10.17.0.253 8h1m36s
[2] => 2 R omarmool@dr pppoe 68:72:51:3A:53:1B 10.17.0.251 8h1m36s
[3] => 3 R admin@khr2 pppoe 24:A4:3C:9F:83:10 10.17.0.252 8h1m36s
[4] => 4 R yas@ahmed.m pppoe 24:A4:3C:E6:DD:3E 10.17.0.250 8h1m36s
[5] => 5 R hus@ahmed.m pppoe 44:D9:E7:DA:32:95 10.16.0.246 8h1m36s
)
现在解决方法以便不需要更改文本文件中的任何内容(完整代码): -
<?php
$array = explode("\n", file_get_contents('myfile.txt'));
echo "<pre/>";print_r($array);
$new_array = array();
foreach($array as $key =>&$arr){
if ($arr[3] !=='R'){
$arr[3] ="_";
}
$parts = preg_split('/\s+/', trim($arr));
if($parts[1] == '_'){
$parts[1] = '';
}
$new_array[$key] = $parts;
}
echo "<pre/>";print_r($new_array);
注意: - 它会为您提供您向我们展示的精确所需输出(我已在本地测试过)
您在评论中提到的内容如下所示: -
<?php
$array = explode("\n", file_get_contents('myfile.txt'));
echo "<pre/>";print_r($array);
$new_array = array();
$indexed_array = Array('number','flag','name','service','mac','IP','uptime');
foreach($array as $key =>&$arr){
if ($arr[3] !=='R'){
$arr[3] ="_";
}
$parts = preg_split('/\s+/', trim($arr));
if($parts[1] == '_'){
$parts[1] = '';
}
$new_array[$key] = array_combine($indexed_array,$parts);
}
echo "<pre/>";print_r($new_array);
答案 1 :(得分:1)
<?php
$lines = array();
$fopen = fopen('converted.txt', 'r');
while (!feof($fopen)) {
$line=fgets($fopen);
$line=trim($line);
$lines[]=$line;
}
fclose($fopen);
$finalOutput = array();
foreach ($lines as $string)
{
$string = preg_replace('!\s+!', ' ', $string);
$row = explode(" ", $string);
array_push($finalOutput,$row);
}
echo "<pre>";
print_r($finalOutput);
echo "</pre>";
?>
和输出
Array
(
[0] => Array
(
[0] => 0
[1] => hbhenet
[2] => pppoe
[3] => D4:CA:6D:F1:5D:5A
[4] => 10.23.0.254
[5] => 8h1m36s
)
[1] => Array
(
[0] => 1
[1] => R
[2] => moh@hj
[3] => pppoe
[4] => 00:27:22:16:3B:F2
[5] => 10.17.0.253
[6] => 8h1m36s
)
[2] => Array
(
[0] => 2
[1] => R
[2] => omarmool@dr
[3] => pppoe
[4] => 68:72:51:3A:53:1B
[5] => 10.17.0.251
[6] => 8h1m36s
)
[3] => Array
(
[0] => 3
[1] => R
[2] => admin@khr2
[3] => pppoe
[4] => 24:A4:3C:9F:83:10
[5] => 10.17.0.252
[6] => 8h1m36s
)
[4] => Array
(
[0] => 4
[1] => R
[2] => yas@ahmed.m
[3] => pppoe
[4] => 24:A4:3C:E6:DD:3E
[5] => 10.17.0.250
[6] => 8h1m36s
)
[5] => Array
(
[0] => 5
[1] => R
[2] => hus@ahmed.m
[3] => pppoe
[4] => 44:D9:E7:DA:32:95
[5] => 10.16.0.246
[6] => 8h1m36s
)
)