Php 重新格式化文件的内容
我有一个名为“data.txt”的文件。在这个文件中,有30行字符串都具有相同的长度。看起来是这样的:Php 重新格式化文件的内容,php,foreach,while-loop,fopen,explode,Php,Foreach,While Loop,Fopen,Explode,我有一个名为“data.txt”的文件。在这个文件中,有30行字符串都具有相同的长度。看起来是这样的: 2QA4ZRDUT IDVLTLZSC 4GYC3HCMV 1W6409JD5 70P7U66TE 2QA4ZRDUT;IDVLTLZSC;4GYC3HCMV;1W6409JD5;70P7U66TE; NGN1TGF6G;JWVI7LSIZ;U99TMVXXK;KLBDMRPQV;MEFKLUO3; 。。。等等 我现在要做的是重新格式化这些行。我想在一行5个字符串,用“;”分隔。在那之后,
2QA4ZRDUT
IDVLTLZSC
4GYC3HCMV
1W6409JD5
70P7U66TE
2QA4ZRDUT;IDVLTLZSC;4GYC3HCMV;1W6409JD5;70P7U66TE;
NGN1TGF6G;JWVI7LSIZ;U99TMVXXK;KLBDMRPQV;MEFKLUO3;
。。。等等
我现在要做的是重新格式化这些行。我想在一行5个字符串,用“;”分隔。在那之后,我想要一条新线路和下一条5。最后,它应该是这样的:
2QA4ZRDUT
IDVLTLZSC
4GYC3HCMV
1W6409JD5
70P7U66TE
2QA4ZRDUT;IDVLTLZSC;4GYC3HCMV;1W6409JD5;70P7U66TE;
NGN1TGF6G;JWVI7LSIZ;U99TMVXXK;KLBDMRPQV;MEFKLUO3;
。。。以此类推,直到文件的全部内容都像这样重新格式化
在过去的几个小时里,我一直试图通过使用for、foreach和while循环来实现这一点,但我只得到了一行。我希望有人能帮助我,因为我对PHP没有那么丰富的经验
这是“data.txt”的内容:
诸如此类:
<?php
$oldf=fopen('data.txt','r');
$newf=fopen('data_new.txt','w');
$i=0;
while(!feof($oldf))
{
$i++;
$line=fgets($oldf);
fwrite($newf,$line.';');
if($i%5==0)
fwrite($newf,"\n");
}
fclose($oldf);
fclose($newf);
试试这个:
<?php
$file_name = "test.txt"; // Change file name as needed
$file_data = file_get_contents($file_name);
$file_data_array = explode('\n', $file_data);
$i = 0;
$new_file_data = "";
foreach ($file_data_array as $piece)
{
$new_file_data .= $piece . ';';
$i++;
if ($i % 5 == 0) // Change number of pieces you want on a line as needed
{
$new_file_data .= '\n';
}
}
file_put_contents($file_name, $new_file_data);
?>
这应该可以做到:
$str = '2QA4ZRDUT
IDVLTLZSC
4GYC3HCMV
1W6409JD5
70P7U66TE
OG2JBBZF6
5391PHOVW
ZAJ3OZ4H2
GMOB9E9X7
Q8U4C8ZK1
0WDZLRWWJ
N487W3S24
PKXQFFEK3
NSMKC29IB
HOLI1T2ZB
DVPIVLLLS
FH7RSZWTM
9VSUWPZEX
NM6ZWV19I
NGN1TGF6G
JWVI7LSIZ
U99TMVXXK
KLBDMRPQV
MEFKLUO3L
LICFIK24W
ELGPLCK51
QQS4SOJV1
KJ2UVTU1B
FLQ6T7LG6
QJZLAPYN1';
$arr = explode(PHP_EOL, $str);
$c = 1;
$str3 = '';
foreach ($arr as $item) {
$str3.= $item.';';
if ($c % 5 == 0) {
$str3.= PHP_EOL;
}
++$c;
}
echo "<p>$str3</p>";
$str='2QA4ZRDUT
IDVLTLZSC
4GYC3HCMV
1W6409JD5
70P7U66TE
OG2JBBZF6
5391PHOVW
ZAJ3OZ4H2
GMOB9E9X7
Q8U4C8ZK1
0WDZLRWJ
N487W3S24
PKXQFFEK3
NSMKC29IB
HOLI1T2ZB
DVPIVLLS
FH7RSZWTM
9VSUWPZEX
NM6ZWV19I
NGN1TGF6G
JWVI7LSIZ
U99TMVXXK
KLBDMRPQV
Mefkloo3L
LICFIK24W
ELGPLCK51
QQS4SOJV1
KJ2UVTU1B
FLQ6T7LG6
QJZLAPYN1′;
$arr=explode(PHP_EOL,$str);
$c=1;
$str3='';
foreach($arr作为$item){
$str3.=$item;
如果($c%5==0){
$str3.=菲律宾比索;
}
++$c;
}
回声“$str3”;
请注意,在浏览器中看不到换行符,但在“查看源代码”时,换行符会很明显
编辑:我在这里使用PHP\u EOL,而不是其他答案所建议的“\n”。这可以确保脚本在任何平台(Win、MacOS和*nix)上都能正常工作,只要PHP设置设置为true提示:使用模数operator@user1418870:很高兴能帮上忙,现在你能接受这个答案吗?