在将txt文件的内容加载到$str
之后,我需要在$str
中使用针对空格的爆炸函数,但它看起来效果不好:
$filename='acct.txt';
$str=file_get_contents($filename);
print_r (explode("\t",$str));
输出:
Array ( [0] => 101 [1] => 345.23 102 [2] => 43.2 103 [3] => 0 104 [4] => 33 )
print_r (explode(" ",$str));
输出:
Array ( [0] => 101 [1] => 345.23 102 [2] => 43.2 103 [3] => 0 104 [4] => 33 )
该文件包含:
101 345.23
102 43.2
103 0
104 33
我应该如何更改它以一次获得一个元素? 即:
Array ( [0] => 101 [1] => 345.23 [2] => 102 ....[8]=>33)
感谢您的帮助!
答案 0 :(得分:1)
答案是如果你有多个分隔符(换行符和空格),你必须使用preg_split函数而不是explode。所以你的代码应该是这样的:
$filename='acct.txt';
$str=file_get_contents($filename);
print_r (preg_split( '/( |\r\n|\r|\n)/', $str ));
将要打印:
Array ( [0] => 101 [1] => 345.23 [2] => 102 [3] => 43.2 [4] => 103 [5] => 0 [6] => 104 [7] => 33 )
修改强>
虽然上面的正则表达式工作得很好,但使用这样的东西要简单得多:
preg_split( '/(\s+)/', $str )
具有完全相同的输出但更优雅。
答案 1 :(得分:-1)
您可以使用<?php
function flatArray($array) {
$arrayValues = array();
foreach (new RecursiveIteratorIterator( new RecursiveArrayIterator($array)) as $val) {
$arrayValues[] = $val;
}
return $arrayValues;
}
$handle = fopen("acct.txt", "r");//YOur file location
$rows = array();
if ($handle) {
while (($str = fgets($handle)) !== false) {
// process the line read.
$rows[] = explode(" ",$str);
}
fclose($handle);
} else {
// error opening the file.
}
$flatarray = flatArray($rows);
var_dump($flatarray);
逐行阅读文件。获取一行数组然后展平它。可能有更多的捷径,但这对我有用。
{{1}}