为什么在某些空间字符串中无法通过空间爆炸

时间:2019-11-26 06:33:02

标签: php arrays explode

2   2019-11-21 21:51:24 0   1
1   2019-11-25 13:32:06 0   1
1   2019-11-25 13:36:31 0   1
1234    2019-11-25 13:38:55 0   1

我已经从上面的网站输出了数据,然后我想将这些数据分解为Array ( [0] => 2 [1] => 2019-11-21 [2] => 21:51:24 [3] => 0 [4] => 1 1 [5] => 2019-11-25 [6] => 13:32:06 [7] => 0 [8] => 1 1 [9] => 2019-11-25 [10] => 13:36:31 [11] => 0 [12] => 1 1234 [13] => 2019-11-25 [14] => 13:38:55 [15] => 0 [16] => 1 );这样的数组输出

但是当我尝试运行

之类的输出时
Array
(
    [0] => 2    2019-11-21
    [1] => 21:51:24 0   1
    [2] => 
    [3] => 1    2019-11-25
    [4] => 13:32:06 0   1
    [5] => 
    [6] => 1    2019-11-25
    [7] => 13:36:31 0   1
    [8] => 
    [9] => 1234 2019-11-25
    [10] => 13:38:55    0   1
)

为什么有些空间没有爆炸?

4 个答案:

答案 0 :(得分:1)

首先,您需要用单个空格替换多个空格,然后对结果执行爆炸

$string = '2   2019-11-21 21:51:24 0   1';
$singleSpace = preg_replace('!\s+!', ' ', $string);
$explodeData = explode(" ",$singleSpace);

答案 1 :(得分:0)

请尝试以下代码。它正在工作。

new_df = df2.merge(df1.rename({'Zip': 'old_zip'}, axis=1), how='right')
new_df['Zip'] = new_df['Zip'].combine_first(new_df['old_zip'])
new_df.drop('old_zip', axis=1, inplace=True)

以上代码的输出为:

echo "<pre>";

$data = '2   2019-11-21 21:51:24 0   1
1   2019-11-25 13:32:06 0   1
1   2019-11-25 13:36:31 0   1
1234    2019-11-25 13:38:55 0   1';

$newData = explode(" ",str_replace(PHP_EOL," ",$data));
foreach($newData as $k => $v) {
    if($v == null) {
        unset($newData[$k]);
    }
}

print_r(array_values($newData));

答案 2 :(得分:0)

它们不是空格,而是制表符。我希望这是四个制表符分隔的字段。

$tsv = <<<"CSV"
2\t2019-11-21 21:51:24\t0\t1
1\t2019-11-25 13:32:06\t0\t1
1\t2019-11-25 13:36:31\t0\t1
1234\t2019-11-25 13:38:55\t0\t1
CSV;

echo $tsv, "\n\n";

foreach(explode("\n", $tsv) as $line) {
    var_dump(explode("\t", $line));
}

如果加载文件,则可以为fgetcsv提供分隔符:

$fh = fopen($file, 'rb');
while($line = fgetcsv($fh, 0, "\t")) {
    var_dump($line);
}

答案 3 :(得分:0)

$data = "2   2019-11-21 21:51:24 0   1";
$output = preg_replace('/\s+/',' ', $data);
$data = explode(" ",$output);
print_r($data);