在 PHP 中,拆分分隔的字符串数据的最佳方法是什么?

3

寻求PHP帮助,关于最佳实践。什么是有效的方法来分割这些行?我正在研究使用explode还是正则表达式更好?然后也许将它们显示在一个表格中?感谢您的意见。

输入文件:

PRE:abc:KEY1:null:KEY2:/myproject/data/dat_abc_2010120810.gz1
PRE:def:KEY1:sdsu:KEY2:mail_abc.dat.2010120810.gz1

预期输出或用于显示的网页:
PRE  KEY1 KEY2
===  ==== ======================================
abc  null /myproject/data/dat_abc_2010120810.gz1
def  sdsu mail_abc.dat.2010120810.gz1

2
使用 explode -- 不必要时不要使用正则表达式。 - casablanca
2个回答

5

如果您有这样的文件,我建议您按照以下两个步骤来处理...

第一步

使用file()获取表示文件的数组。

第二步

现在您可以使用explode()来获取所有不同的列并将它们输出。

快速示例:

<?php
$output = "";

$file = file("data.txt");
foreach ($file as $line)
{
    $cols = explode (":", $line);
    $output .= "{$cols[0]} {$cols[1]}";
}
?>

希望这有所帮助。

4

explode 函数可以完美地解决这个问题:

$fp = fopen('myfile.txt', 'r');
while ($line = fgets($fp))
   $parts = explode(':', $line);
   $array = array();
   for ($i=0; $i<count($parts); $i+=2) {
      $array[$parts[$i]] = isset($parts[$i+1]) ? $parts[$i+1] : 'null';
   }
   print_r($array);
}

将输出:

Array
(
    [PRE] => abc
    [KEY1] => null
    [KEY2] => /myproject/data/dat_abc_2010120810.gz1
)
Array
(
    [PRE] => def
    [KEY1] => sdsu
    [KEY2] => mail_abc.dat.2010120810.gz1
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接