2012-07-25 79 views
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 
+2

提示:使用模運算符 – 2012-07-25 16:04:47

回答

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); 
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); 
?> 
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」,因爲其他答案已經提示。這確保了該腳本將正確只要工作在任何平臺(贏,MacOS的& * nix中)上的PHP設置auto_detect_line_endings設置爲true

+0

非常感謝你。那個人的工作很棒。 – kolja 2012-07-25 16:21:06

+0

@ user1418870:很高興能幫上忙,現在您能接受這個答案嗎? – hellsgate 2012-07-25 16:22:03