如何检索选项卡分隔列表中的第一列

时间:2013-07-01 17:38:32

标签: php file-handling

好的伙计们,我有一个格式如下的列表:

Entry-no.1[tab]Description[line-break]
Entry-no.2[tab]Description[line-break]
Entry-no.3[tab]Description[line-break]
and so on...

我已经尝试了一切来隔离“Entry Column”并创建一个逗号分隔的表格,如下所示:

Entry-no.1,Entry-no.2,Entry-no.3,etc..

这是我能做到的最好的代码,但它不起作用:(。

<?php
$ls = file_get_contents("File.txt");
$newLS = "";
$index = 0;
for($i=0;$i<strlen($ls);$i++) 
{ 
if($ls[$i]=='\t'){
    $index = $i;
}
if($ls[$i]=='\n'){
    $newLS += substr($ls,0,$index); 
}
} 
echo "woot<br>";
echo $newLS;
echo "done";
?>


附:我无法更改文件的原始布局。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题。在线文档。

// read file into array
$array = file('File.txt');

// new array to store results
$new_array = array();

// loop through array
foreach ($array as $line) {
    // explode the line on tab. Note double quotes around \t are mandatory
    $line_array = explode("\t", $line);
    // set first element to the new array
    $new_array[] = $line_array[0];
}

// you can either use this array as is or output as comma-separate value as follows:
echo implode(',', $new_array);

总结如下:

  • 将文件读入数组而不是字符串。这会照顾你的换行符
  • 在标签前获取每一行的一部分并放入新数组中。
  • \t周围使用双引号很重要,否则它将被视为字面反斜杠和t。