PHP üreten csv doğru yeni hat beslemeleri göndermiyor

2 Cevap php

Aşağıdaki kodu kullanarak bir csv dosyasını üreten bir komut dosyası var:

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"');
print $content;

. $ Içeriği değişken, basitçe alanları virgülle ayrılmış ve daha sonra "\ n" ile kesinleşmiş çizgiler içeriyor; Yeni bir satır oluşturmak için.

Ben CSV dosyasını açtığınızda ben satırın sonunda (\ n) karakteri tanımak ve metin uzun bir satır kabul etmez harici bir program (MYOB) aktarmak için dosyayı kullanmaya çalıştığınızda, ancak ince görünüyor.

Ben notepad dosyasının içeriğini görüntülediğinizde, çizgi karakteri (\ n) uç karakter kodu 0x7F gibi görünen küçük bir dikdörtgen kutu.

Ben dosyayı açın ve excel yeniden kaydetmek, bu karakteri kaldırır ve çizgi karakteri uygun bir ucu ile değiştirir ve dosyayı alabilirsiniz.

Ben bu yüzden not defteri satır karakter geçerli bir sonu olarak tanır PHP getirici neler karakter gerekiyor? (\ N) açıkça iş yapmaz.

2 Cevap

Kullan "\ r \ n". (Çift tırnaklar)

Yukarıdaki satırbaşı + satır besleme için ASCII karakter.

Tarihsel olarak bu çıkış kağıda basılmış zaman teletypes üzerinde bilgisayar ve ayrı bir operasyon yazıcıya bir satır besleme hattın başlangıcına teletip baş arabası oldu dönen ilk günlerinde ilgilidir. Sen sadece bir satırbaşı yaparak çizgileri üzerine ve sadece bir satır besleme ile boş satır eklemek olabilir. Her iki satırın başlangıcına baş döndü ve onu yazdırmak için yeni bir satır beslenir Doing.

Hassas sistemleri arasındaki fark ne gerekli -

  • Sistemleri gibi pek çok Unix -: çizgi sadece beslemek
  • Satırbaşı artı Satır besleme: - Aralık amd, MS-DOS tabanlı sistemler
  • Satırbaşı Sadece: - Erken Apple / Mac OS adlı

Peki şu anda üreten konum sadece bir Unix sisteminde bir satır olduğunu. Wikipedia bu konuda oldukça good page vardır.

Çok dönüştürme yapmak için Unix komut satırı araçları aslında var. Unix2Dos ve dos2unix komutları ASCII metin yem artı satırbaşı ve vica tam tersi hat satır besleme dönüştürerek unix ve dos formatları arasında ileri ve geri dosyalarına dönüştürebilirsiniz.

Önceki yanıtta belirtildiği gibi \ r \ n çift tırnak değil tek tırnak kullandığınızdan emin olun!