2012-02-26 69 views
0

下面的代碼輸出格式良好的文本文件。但是它也在文本文件的末尾添加了一個額外的字符 - 我假設一個\ r或\ n字符。我已經試過sed'$ d'但是這不起作用。當我在編輯器中打開輸出文件(load_data_infile.txt)時,我將光標定位在文件的最後一行文本之後,它說我處於「奇怪的15」行。我怎樣才能在14行文件中有15行?fgets增加了一個額外的行來輸出文件?

我的問題是這些:1)什麼是導致行「15的14」和2)我怎樣才能防止它被寫入或一旦它被刪除?

謝謝!

<?php 

$file_write_output = fopen("load_data_infile.txt", "w") or die ("can't open load_data_infile.txt for writing"); 
$file_read_input = fopen("http://file.txt", "r") or die ("can't open file"); 

//perform the loop through the file - read the input file line by line with fgets function 

while (!feof($file_read_input)) { 

$input = fgets($file_read_input); 


echo "$input"; 

fwrite($file_write_output,$input); 

} 

fclose($file_write_output); 

fclose($file_read_input); 

?> 

<?php 

//strip out the header of load_data_infile.txt file 


exec("sed -i '1d' load_data_infile.txt"); 


?> 
+0

如果您正在使用UNIX,你可以用'LS -l'來檢查lenghts是相同的,我不相信的fwrite()寫任何東西比。 – SteAp 2012-02-26 22:30:49

+0

讀取數據。 'od -c'會顯示字符並將空格\不可打印的字符轉換成您可以看到的東西。 – 2012-02-26 23:03:08

+0

嗨,謝謝 - od -c在命令行執行?我需要指定文件名嗎? – tomish 2012-02-27 04:23:42

回答

0

試試這個:

$content = file_get_contents('http://file.txt'); 

if ($file !== false) { 
    return $file; 
} 

if (file_put_contents('load_data_infile.txt', $content, LOCK_EX)) { 
    // Success 
} 

PHP文件: PHP file_get_contentsPHP file_put_contents

+0

謝謝 - 這是否取代我的循環? – tomish 2012-02-27 04:24:04

0

下面的代碼工作!

<?php 
    $raw_data = file_get_contents('http://file.txt'); 
    $trimmed_raw_data=trim($raw_data); 
    echo $trimmed_raw_data; 
    if (file_put_contents('load_data_infile.txt', $trimmed_raw_data, LOCK_EX)) 
?>