fgets добавляет дополнительную строку в выходной файл? - PullRequest
0 голосов
/ 27 февраля 2012

Код ниже выводит красиво отформатированный текстовый файл. Но он также добавляет дополнительный символ в конце текстового файла - я предполагаю символ \ r или \ n. Я пробовал sed '$ d', но это не работает. Когда я открываю выходной файл (load_data_infile.txt) в редакторе и позиционирую курсор после последней записанной строки файла, он говорит, что я нахожусь на строке «15 из 14», что странно. Как я могу иметь 15 строк в файле из 14 строк?

У меня такие вопросы: 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");


?>

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Код ниже работает!

<?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) ) 
?>
0 голосов
/ 27 февраля 2012

Попробуйте это:

$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_contents и PHP file_put_contents

...