Bir Data Feed Ayrıştırma

5 Cevap php

PHP en iyi değilim ve birileri yardımcı olabilir son derece minnettar olacaktır. Temelde bir Datafeed her satırı ayrıştırmak ve sadece arasındaki bilgi her bit almak için gereken her "|" - sonra bir veritabanına ekleyebilirsiniz. "|" Ben arasından bilgi almak işleyebilir düşünüyorum patlayabilir kullanarak 's ama ben tekil olarak bir metin dosyasındaki her satırı ayrıştırma biraz yardım gerekiyor. Hatta daha basit hale getirmek için Infact, ben sadece bir değişkenin her satırı kullanmanız gerekir, ben bir textarea ve bir formu kullanarak değişken içerik sunacak. Herhangi bir yardım büyük mutluluk duyacağız!

5 Cevap

Sen çizgilerin bir diziye bir dosyayı okumak ve tüm bölme yapabilirsiniz:

$lines = file("filename");
foreach($lines as $line) {
    $parts = explode("|", $line);
    // do the database inserts here
}

Eğer, yukarıdaki gibi aynı foreach deyimini mutlaka sonra \ n ilk günü patlayabilir ve olabilir (file_get_contents gibi bir şey () ile, örneğin) dediği gibi zaten bir değişken tüm metin varsa.

Eğer textarea yazının okunması iseniz, o zaman dizi elemanları üzerinde patlayabilir yapabilirsiniz, bir dizi yeni bir unsuru olarak değişken her bir "hat" almak için ayırıcı olarak satır karakteri kullanarak patlayabilir işlevini kullanabilirsiniz.

yani

$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";

$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
    $lineElements[] = explode("|", $oneLine);
}

o zaman elems bir 2d dizi var.

Eğer bir dosyanın okunması iseniz, sadece burada belgelenen dosya işlevini kullanabilirsiniz:

http://us2.php.net/manual/en/function.file.php

Dizinin bir öğesi olarak dosyasının her satırı almak için.

CSV formatında otomatik algılayabilen bir hazır-yerleşik PHP ayrıştırma kütüphanesi var.

Örnek:

$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');

foreach ($reader AS $record) {
    print_r($record);
}

Bu here indirmek için kullanılabilir ve bazı belgeler var here.

Dosya küçük ise, file() t o, bir diziye elemanı başına bir satır okumak kullanabilirsiniz.

Aksi taktirde döngüsünü kullanarak dosyayı okuma fgets()

$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
   $buffer = fgets($handle, 4096);
   echo $buffer;
}
fclose($handle);

Sen hem de almak için patlayabilir kullanabilirsiniz:

$myFile = "File.txt";
$fh = fopen($myFile, 'r');
$data = fread($fh);
fclose($fh);
$newLines = explode("\n",$data);

foreach($newLines as $s)
{
  $parsed = explode("|",$s);
  foreach($parsed as $item)
  {
    // do your db load here
  }
}