PHP - 如何将没有 header 的列删除到 txt 文件中
PHP - How to delete column with no header into txt file
我有一个 txt 文件,其中第一行包含列名。但是有些行没有标题,我想知道是否有任何解决方案可以将那些没有列名的行删除到我的txt文件中?
要访问我的 txt 文件:
$handleFile= fopen("/opt/lampp/htdocs/ngs/tmp/testfile.txt","r");
$dataTestFile=fgetcsv($handleFile,0,"\t");
这是一个例子:
Data1;Data2;;Input;;
aaaaa;ferfs;;alpha;dfdfd;
期望输出:
Data1;Data2;Input;
aaaaa;ferfs;alpha;
第一行是列名,有些列没有名字,我需要删除所有没有名字的列。
谢谢。
您需要先读取第一行并将列号为空的数据存储在数组中。
获得数组后,您可以使用以下代码跳过列:
$columns = array(1,3); // columns to skip
while (($data = fgetcsv($dataTestFile, 1000, "|")) !== FALSE) {
echo("<tr>\r\n");
foreach ($data as $index=>$val) {
if (!in_array($index+1, $columns)) {
echo("\t<td>$val</td>\r\n");
}
}
echo("</tr>\r\n");
} //end while
我会做这样的事情:
<?php
$data=file_get_contents("/opt/lampp/htdocs/ngs/tmp/testfile.txt");
$array=explode("\n",$data); // putting rows in an array
$first_line=$array['0'];
$first_line_array=explode("|",$first_line);
$removed_columns=array();
foreach ($first_line_array as $key=>$value){
if(strstr(" ",$value) !== FALSE){
array_push($removed_columns,$key);
}
}
// now we know what columns to remove
$new_line='';
$new_array=array();
$new_line_array=array();
$old_line_array=array();
for($x=0;$x<count($array);$x++){
$old_line_array=explode("|",$array[$x]);
for($y=0;$y<count($old_line_array);$y++){
if(!in_array($y,$removed_columns)){
array_push($new_line_array,$old_line_array[$y]);
}
}
$new_line=join('|',$new_line_array);
array_push($new_array,$new_line);
$new_line='';
$new_line_array=array();
$old_line_array=array();
}
$new_data=join("\n",$new_array);
file_put_contents("/opt/lampp/htdocs/ngs/tmp/testfilenew.txt",$new_data)
?>
最后你得到了包含你想要的数据的文件(testfilenew.txt)
我有一个 txt 文件,其中第一行包含列名。但是有些行没有标题,我想知道是否有任何解决方案可以将那些没有列名的行删除到我的txt文件中?
要访问我的 txt 文件:
$handleFile= fopen("/opt/lampp/htdocs/ngs/tmp/testfile.txt","r");
$dataTestFile=fgetcsv($handleFile,0,"\t");
这是一个例子:
Data1;Data2;;Input;;
aaaaa;ferfs;;alpha;dfdfd;
期望输出:
Data1;Data2;Input;
aaaaa;ferfs;alpha;
第一行是列名,有些列没有名字,我需要删除所有没有名字的列。
谢谢。
您需要先读取第一行并将列号为空的数据存储在数组中。
获得数组后,您可以使用以下代码跳过列:
$columns = array(1,3); // columns to skip
while (($data = fgetcsv($dataTestFile, 1000, "|")) !== FALSE) {
echo("<tr>\r\n");
foreach ($data as $index=>$val) {
if (!in_array($index+1, $columns)) {
echo("\t<td>$val</td>\r\n");
}
}
echo("</tr>\r\n");
} //end while
我会做这样的事情:
<?php
$data=file_get_contents("/opt/lampp/htdocs/ngs/tmp/testfile.txt");
$array=explode("\n",$data); // putting rows in an array
$first_line=$array['0'];
$first_line_array=explode("|",$first_line);
$removed_columns=array();
foreach ($first_line_array as $key=>$value){
if(strstr(" ",$value) !== FALSE){
array_push($removed_columns,$key);
}
}
// now we know what columns to remove
$new_line='';
$new_array=array();
$new_line_array=array();
$old_line_array=array();
for($x=0;$x<count($array);$x++){
$old_line_array=explode("|",$array[$x]);
for($y=0;$y<count($old_line_array);$y++){
if(!in_array($y,$removed_columns)){
array_push($new_line_array,$old_line_array[$y]);
}
}
$new_line=join('|',$new_line_array);
array_push($new_array,$new_line);
$new_line='';
$new_line_array=array();
$old_line_array=array();
}
$new_data=join("\n",$new_array);
file_put_contents("/opt/lampp/htdocs/ngs/tmp/testfilenew.txt",$new_data)
?>
最后你得到了包含你想要的数据的文件(testfilenew.txt)