Çok büyük bir metin dosyasına bir karakter ortaya sayısını sayma

4 Cevap

Ben (onun virgülle verileri ayrılmış olan) çok büyük bir metin dosyasındaki tüm virgül oluşumunu saymak istiyorum. Boyutu 28MB olduğunu. Ben metin dosyasını kadar yükleme ve böyle bir şey yaptığını düşündüm:

substr_count($text, ',');

İyi fikir? Işe yarayacak mı?

Genel görev, kaç satır veri bulmaktır. Ben virgül sayısını sayarken, bana satır sayısını verecektir sütun sayısına göre bu böleceğiz. Bunu yapmanın daha iyi bir yolu varsa, bana bildirin!

Tüm teşekkürler

EDIT

Aşağıdaki çalıştı ama öneri olarak verimli?

$lines = file('C:\wamp\CE.txt');

$number = 0;

foreach($lines as $line){

   $number = $number + substr_count($line, ',');

}

echo $number;

4 Cevap

CSV şöyle:

lines -> rows
commas -> columns

Yani satırlarda yanlış var. Eğer satırları saymak istiyorsanız sadece satırsonlarının için dosyayı yineleme.

$file = "youfile.txt"; 
$lines = count(file($file)); 
echo "There are ".$lines." lines in ".$file;

Örnek olarak çalışacak ...

Kayıtlarınız yeni çizgilerle ayrılmış iseniz, satır numarasını almak için aşağıdakileri yapabilirsiniz:

  $file = "input.csv";
  $rows = count(file($file));

İyi fikir? Işe yarayacak mı?

Bunu denediniz mi? Bu çok söylemek gerekir.

substr_count ne istediğinizi tam olarak yapan bir içsel olduğu temelde, çok muhtemelen en iyi performansı sunacak.

Performans çok kötü olması bulursanız, size rağmen, adet dosyayı yüklemek gerekebilir.

Frankie sağ onun cevabını değildir. Hoever, ben dosyası () fonksiyonu ile dosya okuma ve sonra sadece dizi öğelerini sayma öneririm.