【问题标题】:PHP parse on tabs and line breaksPHP 解析制表符和换行符
【发布时间】:2012-03-03 05:56:17
【问题描述】:

我正在尝试使用如下换行符解析制表符分隔文件中的各个值:

00601   166659789   799296  64.348  0.309   -66.749961  18.180555
00602   79288158    4446273 30.613  1.717   -67.17613   18.362268

我现在正在解析它:

$delimiter = "\t";
$splitcontents = explode($delimiter, $contentsOfFile);
foreach ( $splitcontents as $value )
{
   echo $value;
}

但是,当出现新行时,这有效,前一行的最后一个值和新行的第一个值合并。所以当for循环到达第一行末尾时,最后一个值实际上是“18.180555 00602”。

如何根据换行符和制表符解析出值?

【问题讨论】:

    标签: php regex parsing tsv


    【解决方案1】:

    先根据换行符展开,再用tab展开每一行。

    $delimiter = "\n";
    $splitcontents = explode($delimiter, $contentsOfFile);
    foreach ( $splitcontents as $line )
    {
        $bits = explode("\t", $line);
        var_dump($bits);
    }
    

    【讨论】:

    • 这就是 preg_split 的用途......我想我会提倡在爆炸之前这样做,因为如果你正在处理像 \r\n 这样的混合换行符怎么办?
    【解决方案2】:

    看起来您只是想解析一个制表符分隔的文件。使用fgetcsv 并将分隔符指定为制表符。

    http://us3.php.net/manual/en/function.fgetcsv.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多