4 回答

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊
我相信最好的方法是 preg_split 而不是explode,因為它會處理額外的空間。
$str = '#ORGNR "123" 1
#ACCOUNT 1010 "Kassa"
#ACCOUNT 1050 "Bank"
#IB -1 1010 1923.15
#IB 1 1050 201.42';
$arr = explode("\n", $str); // you use file but it's the same thing
foreach($arr as &$val){
$val = preg_split("/\s+/", $val);
}
var_dump($arr);
上面的輸出:
array(5) {
[0]=>
array(3) {
[0]=>
string(6) "#ORGNR"
[1]=>
string(5) ""123""
[2]=>
string(1) "1"
}
[1]=>
array(3) {
[0]=>
string(8) "#ACCOUNT"
[1]=>
string(4) "1010"
[2]=>
string(7) ""Kassa""
}
[2]=>
array(3) {
[0]=>
string(8) "#ACCOUNT"
[1]=>
string(4) "1050"
[2]=>
string(6) ""Bank""
}
[3]=>
array(4) {
[0]=>
string(3) "#IB"
[1]=>
string(2) "-1"
[2]=>
string(4) "1010"
[3]=>
string(7) "1923.15"
}
[4]=>
&array(4) {
[0]=>
string(3) "#IB"
[1]=>
string(1) "1"
[2]=>
string(4) "1050"
[3]=>
string(6) "201.42"
}
}

TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊
$string = '#ORGNR "123" 1
#ACCOUNT 1010 "Kassa"
#ACCOUNT 1050 "Bank"
#IB -1 1010 1923.15
#IB 1 1050 201.42';
$result = explode(PHP_EOL, $string);
foreach ($result as $k => $v) {
$result[$k] = preg_split('/\s+/', trim($v));
}
echo '<pre>';
print_r($result);
或者
$string = '#ORGNR "123" 1
#ACCOUNT 1010 "Kassa"
#ACCOUNT 1050 "Bank"
#IB -1 1010 1923.15
#IB 1 1050 201.42';
echo($string);
$result = explode(PHP_EOL, $string);
foreach ($result as $k => $v) {
$result[$k] = explode(' ', trim(preg_replace('/\s+/', ' ', $v)));
}
echo '<pre>';
print_r($result);
結(jié)果
[
[0] => 'Array',
[
[0] => '#ORGNR',
[1] => '"123"',
[2] => '1',
]
[1] => 'Array',
[
[0] => '#ACCOUNT',
[1] => '1010',
[2] => '"Kassa"',
]
[2] => 'Array',
[
[0] => '#ACCOUNT',
[1] => '1050',
[2] => '"Bank"',
]
[3] => 'Array',
[
[0] => '#IB',
[1] => '-1',
[2] => '1010',
[3] => '1923.15',
]
[4] => 'Array',
[
[0] => '#IB',
[1] => '1',
[2] => '1050',
[3] => '201.42',
]
]

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊
如果我正確理解了這個問題,這就是你想做的。
$dataAsArray = file('data.txt');
$result = [];
foreach ($dataAsArray as $data) {
$result[] = explode(' ', $data);
}
var_dump($result);

TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊
使用array_map簡潔
<?php
$str = '#ORGNR? ?"123" 1
#ACCOUNT? ? 1010? ? "Kassa"
#ACCOUNT? ? 1050? ? "Bank"
#IB? ? ?-1 1010? ? ? ? 1923.15
#IB? ? ?1 1050? ? ? ? ?201.42';
$arr2 = array_map(function($line){
? ? return preg_split("/\s+/", $line);
}, explode("\n", $str));
var_dump($arr2);
將給出相同的正確輸出: https:?//3v4l.org/20cLd
- 4 回答
- 0 關(guān)注
- 220 瀏覽
添加回答
舉報