0

我有一个名为“data.txt”的文件。在这个文件中,有 30 行长度相同的字符串。它看起来像这样:

2QA4ZRDUT
IDVLTLZSC
4GYC3HCMV
1W6409JD5
70P7U66TE

... 等等。

我现在要做的是重新格式化这些行。我想要一行 5 个字符串,用“;”分隔。之后,我想要一个新行和下一个 5。最后,它应该如下所示:

2QA4ZRDUT;IDVLTLZSC;4GYC3HCMV;1W6409JD5;70P7U66TE;
NGN1TGF6G;JWVI7LSIZ;U99TMVXXK;KLBDMRPQV;MEFKLUO3;

...依此类推,直到文件的全部内容都像这样重新格式化。

在过去的几个小时里,我一直试图通过使用 for、foreach 和 while 循环来实现这一点,但我只设法得到一条线。我希望有人可以帮助我,因为我对 PHP 没有那么丰富的经验。

这是“data.txt”的内容:

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
4

3 回答 3

0

类似的东西:

<?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);
于 2012-07-25T16:08:36.460 回答
0

尝试这个:

<?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);
?>
于 2012-07-25T16:10:22.217 回答
0

这应该这样做:

$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>";

请注意,您不会在浏览器中看到换行符,但是当您“查看源代码”时它们会很明显。

编辑:我在这里使用 PHP_EOL 而不是 "\n" 作为其他答案的建议。只要 PHP 设置auto_detect_line_endings设置为 true ,这可以确保脚本在任何平台(Win、MacOS 和 *nix)上都能正常工作

于 2012-07-25T16:12:56.647 回答