Virgül veya sekme ayrılmış metin dosyası okuma

6 Cevap

Ben sekme veya virgülle sınırlandırılmış olabilen bir dosyadan veri okumak gerekir. Ben şimdi bir işlev getcsv olduğunu ama sadece bir olası sınırlayıcı kabul eder.

Herhangi bir bu başa nasıl fikir?

Teşekkürler.

6 Cevap

PHP 5.3 'ten başlayarak, str_getcsv() farklı sınırlayıcılar kullanılarak tek tek satırları okumak için kullanabilirsiniz.

$fp = fopen('mydata.csv', 'r');

while ( !feof($fp) )
{
    $line = fgets($fp, 2048);

    $someCondition = someConditionToDetermineTabOrComma();

    $delimiter = $someCondition ? "," : "\t";
    $data = str_getcsv($line, $delimiter);

    doSomethingWithData($data);
}                              

fclose($fp);

Sen) (fgetcsv için bir sınırlayıcı belirtebilirsiniz. Bu sekme ile ayrılmış dosyaları okuma bir örnektir

 while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
    ...
 }

Eğer explode deneyebilirsiniz

explode ( string $delimiter , string $string [, int $limit ] );

Çizgi ile tüm dosya ya da satır satır okuyun ve bölünmüş kullanarak bölünmüş.

There you can include a regex with arbitrary delimiters. I have not PHP here to test a statement, but php.net -> search for split(). There you also have a comment relating to regex.

This article sizin için kullanım olabilir

Her zaman hata bana insanlar bu gibi telkinde, ama ben kesinlikle varsa, belirli bir dosya ayrılmış virgül veya sekme, ikisini birden sağlamak için bir yol görmeye öneririm. Bu çok daha kolay, işinizi çok daha yapacaktır.

Bu mümkün değilse, ben tek bir muhafazanın içine asla emin olabilirsiniz varsayarak onlardan birine (muhtemelen sekmesi) bir preg_replace yapıyor öneririz.