2013-06-29 55 views
7

私は多くの潜在的な解決策を試しましたが、どれも私のために働いていません。 最も簡単なもの:phpを使ってファイルの最後の行を削除するにはどうしたらいいですか?

$file = file('list.html'); 
array_pop($file); 

は何もしていません。私はここで何か間違っていますか?それはhtmlファイルなので違いますか?

+0

詳細を教えてください –

+0

ディスクに保存されているファイルを実際に変更するには、$ fileをlist.htmlに書き戻す必要があります。 –

+0

最後の行を削除してディスクに保存したいのですか? – angelsl

答えて

9

にファイル

ルックを作成する必要があります、ファイルを読んでいる:

<?php 

// load the data and delete the line from the array 
$lines = file('filename.txt'); 
$last = sizeof($lines) - 1 ; 
unset($lines[$last]); 

// write the new data to the file 
$fp = fopen('filename.txt', 'w'); 
fwrite($fp, implode('', $lines)); 
fclose($fp); 

?> 
+0

私は別のサイトでそれを読んでいましたが、試してみると元のドキュメントがコピーされ、すべてが2回出現しました。それは意味をなさないでしょうか? – jemtan990

+0

ああ、私はうんうん、私は間違ってやっていたことを理解し、それは本当に愚かだった。私はファイルに配列を書き込んで、新しい情報を同時に追加しようとしていました。私はfopen( 'list.html'、 'w +')する必要があった。次に閉じて、 'a'でもう一度開きます。しかし、すべての助けをありがとう!このソリューションは機能します。 – jemtan990

+0

CSV @angezanettiから最初と最後の行を削除するにはどうすればよいですか? –

-2

あなただけが今このべき作品file_put_contentsなど

+0

申し訳ありません、私は詳細を使用する必要があります。私はコードを書いているものとは別のコンピュータでこの質問をしているので、私はすべてを含んでいませんでした。私はファイルに書きましたが、何もしていないだけです。 – jemtan990

0

は、変数の最初と最後の行を削除しますPHPの場合:

phpsh対話シェルの使用:

php> $test = "line one\nline two\nline three\nline four"; 

php> $test = substr($test, (strpos($test, "\n")+1)); 

php> $test = substr($test, 0, strrpos($test, "\n")); 

php> print $test; 
line two 
line three 

"最後の空白行ではありません"という意味かもしれません。その場合は、次のようにします。

コンテンツの後に3つの空白行があることに注意してください。最後の行を削除する前にこれらの行を削除します。

php> $test = "line one\nline two\nline three\nline four\n\n\n"; 

php> $test = substr($test, 0, strrpos(trim($test), "\n")); 

php> print $test; 
line one 
line two 
line three 
0

x行を下から削除する関数を作成しました。 $maxに、削除する行数を設定します。

function trim_lines($path, $max) { 
    // Read the lines into an array 
    $lines = file($path); 
    // Setup counter for loop 
    $counter = 0; 
    while($counter < $max) { 
    // array_pop removes the last element from an array 
    array_pop($lines); 
    // Increment the counter 
    $counter++; 
    } // End loop 
    // Write the trimmed lines to the file 
    file_put_contents($path, implode('', $lines)); 
} 

次のように関数を呼び出します。

trim_lines("filename.txt", 1); 

を変数$pathは、ファイルまたはファイル名へのパスを指定できます。

関連する問題