提问人:Karg 提问时间:9/20/2023 最后编辑:Karg 更新时间:9/21/2023 访问量:47
使用 PHP 解析制表符分隔的文件并创建另一个只有一列作为输出的文本文件
Parse a tab delimited file and create another text file with only one column as output using PHP
问:
我需要读取带有“\t”分隔符的文本文件(input.txt),并且仅在另一个文本文件(output.txt)中显示一列作为输出。
我对此很陌生,希望能找到一些解决方案。
input.txt
文件如下所示:
user1 email1 group1
user2 email2 group2
user3 email3 group3 and so on
我设法找到以下代码来读取文件并打印数组,但不确定如何只将一列写入文件。output.txt
$fp = fopen('input.txt', 'r');
while ( !feof($fp) )
{
$line = fgets($fp);
$data_txt = str_getcsv($line, "\t");
print_r($data_txt);
exit;
}
fclose($fp);
这给了我一个数组中的结果:
array (
0 => 'user1',
1 => 'email1',
2 => 'group1',
)array (
0 => 'user2',
1 => 'email2',
2 => 'group2',
)array (
0 => 'user3',
1 => 'email3',
2 => 'group3',
)
现在,如何将电子邮件列推送到输出.txt文件中?有什么想法吗?
output.txt 中的预期输出如下所示:
email1
email2
email3 and so on
在过去的 2 天里,我查看了其他类似的问题,但找不到将输出写入新文本文件的正确答案。
提前致谢!
答:
0赞
nice_dev
9/21/2023
#1
嗯,有很多方法可以实现这一点。我建议您打开输出文件的文件指针,并在读取新行时逐行写入此文件,然后从刚刚读取的字符串数组中选择第二个索引。
<?php
$fp = fopen('input.txt', 'r');
$outputFP = fopen('output.txt', 'w+');
while (!feof($fp) ){
$line = explode("\t",fgets($fp));
fwrite($outputFP, $line[1] . PHP_EOL);
}
fclose($fp);
fclose($outputFP);
评论
1赞
Karg
9/21/2023
这行得通!谢谢!比修改我的代码要简单得多。
0赞
Karg
9/21/2023
还有一件事,我在此代码中更改什么以获取行而不是列?类似于 user1 email1 group1。
0赞
nice_dev
9/21/2023
@Karg 是具有所有 3 个值的数组。$line
0赞
Karg
9/21/2023
是的 - 但我尝试了几种不同的变体来只得到一行,但每一行都失败了。你能帮忙吗!?
0赞
nice_dev
9/22/2023
@karg 你需要详细说明这一点。如果你问一个新问题会更好。
评论
print_r()
exit