2

現在使用しているファイルの正確な行数を確認するには:

if(exec("wc -l ".escapeshellarg($strFile), $arResult)) {
     $arNum = explode(" ", $arResult[0]);
     // ...
  }

Windowsで同じことを行う最良の方法は何ですか?


編集:

別の質問からの 1 つの試み:

$file="largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
}

fclose($handle);

echo $linecount;
  1. 大きなファイルを使用してこのように経験した人はいますか?

  2. Windowsコマンドを使用してPHP関数以外のファイルサイズを決定する方法はありますか?


解決

findコメントで受け入れられた回答で推奨されているように、コマンドを使用します。

4

4 に答える 4

3

おそらくあなたは使うことができます:

$length = count(file($filename));

これはどこでも機能します。

file()ファイルを配列に読み込み、改行で分割し、配列count()の長さを数えます。

正しく動作しない場合 (たとえば、macintosh ファイルで)、こちらをご覧ください: http://www.php.net/manual/en/filesystem.configuration.php#ini.auto-detect-line-endings

于 2012-06-21T08:52:37.397 に答える
0

行番号を計算するWindowsコマンド:

find /c /v "" < type file-name.txt

愚かなコマンドライントリックから適応:stdinの行数を数える

于 2012-06-21T10:45:50.697 に答える
0

ファイルをループして、毎回行を読み取り、カウンターをインクリメントすることを好みます。file ()によって返される配列を使用してカウントすることは、小さなファイルにのみ適しています。

<?php

$loc = 'Ubuntu - 10.10 i386.iso';

$f = fopen($loc,'r');
$count = 0;

while (fgets($f)) $count++;

fclose($f);

print "Our file has $count lines" . PHP_EOL;

そのような大きなファイルにfile()を使用すると、ファイルが完全にメモリに読み込まれ、状況によっては非常に困難になる可能性があります。これが1回限りの「気にしない、それは私のワークステーションであり、十分なメモリがある」状況である場合、またはファイルが小さいことが保証されている場合は、使用できます

count(file($loc));

それ以外の場合は、特に if アクションを多くのプロセスで実行する必要があるため、ループします。どちらのカウント方法もファイル全体をループしますが、2 番目のケースではメモリが大幅に増加します。

于 2012-06-21T09:21:55.050 に答える