2014-12-15 28 views
5

kullanarak başka csv dosyası oluşturmak ve not defteri aracılığıyla açtığınızda uygulamanın benzer:bir csv dosyasını okuyun ve bir <code>.csv</code> dosyası var php

ID501501503502 

Ve php aracılığıyla tarayıcıda yazdırırken, görünüşe gibi

ID 501 501 503 502 

Benim kodudur: Yani temelde

$handle = fopen("MonC1.csv", "r"); 
$data = fgetcsv($handle, 0); 
$fh = fopen('php://output', 'w'); 
if (! empty($data)) { 
    foreach ($data as $item) { 
     echo $item."<br>"; 
    //fputcsv($fh, array($item)); 
    } 
} 

içeride br etiketi döngü için çalışmıyor.Bu benim ilk sorunum.

Ve ikinci sorun, fputcsv(now it is turned off) kullanıyorum bile gerçek bir csv dosyası oluşturmuyor.

Şimdi benim sorum, not defterinde hiç boş yer kalmadı ve tarayıcıda yazdırdığımda alan kaplıyor?

Sadece bir sütunum var ve başka bir şey yok.

Herhangi bir yardım çok takdir edilmektedir. Şimdiden teşekkürler.

+1

Bu betik hangi HTML'yi üretiyor? – EWit

+0

Aslında bir csv dosyası ID123 içeriyorsa eko ID 1 2 3 yazdırıyorsa, aslında csv dosyasının içeriğini yazdırır. Bu – Raj

+0

Bu nerede yazdırılıyor? @EWit, html yanıtının kaynağını soruyor. –

cevap

1

Benim yorumumda belirtildiği gibi, orijinal dosyanızın UNIX satır sonu ile kaydedilmiş gibi görünüyor ve sonra Windows'ta fgetcsv kullanıyorsunuz, böylece tüm dosya tek satır olarak okunıyor. Çıktının sonunda muhtemelen bir <br> var.

Dosyanızı işleme koymadan önce, satır sonlarını dönüştürmek için önişlemeniz gerekir.

Linux'ta, unix2dos yardımcı programı ne yaparsa onu yapar. Ya da dosyanızda \n'u \r\n ile değiştirebilirsiniz.

Diğer sorun, fgetcsv'un tüm dosyayı bir diziye dönüştürmemesidir. Bunun yerine, dosya tanıtıcınızdan tek bir satır okur ve bunu bir diziye dönüştürür. Bir döngü içinde satırları okumanız gerekir:

while (($data = fgetcsv($handle)) !== FALSE) { 
    // $data contains one line of the CSV, in array form 
    // now you can fputcsv the single line 
} 
+0

Parlak. Şimdi gerçek bir csv dosyasına yazılan veriyi alıyorum.% 100 mükemmel değil ama bu soruyla ilgili olmadığı için muhtemelen biraz zaman geçirdikten sonra başka bir soru yayınlayabilirim. Bir kez daha yardımlarınız için çok teşekkür ederim. – Raj

+0

Sanırım doğru çalışmıyor. Ben yaptım (($ data = fgetcsv ($ tu))! == FALSE) {echo $ data [0]. "
"; } hala tarayıcıda tek bir satır olarak çıkılıyor. Yaptığım hata ne olursa olsun. – Raj

+0

Üzgünüm, çözüm işe yaramıyor. – Raj

İlgili konular