使用explode拆分数组值

时间:2016-08-20 07:16:19

标签: php arrays string

在将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) 

感谢您的帮助!

2 个答案:

答案 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}}