Dosyanın başlatmak için PHP LF prefixing durdurmak için nasıl

4 Cevap php

O zamanlar bir uygulama için girdi olarak kullanılır kullanıcıya bir metin dosyasına bazı bilgileri aktarmak için PHP kullanıyorum. Ben dosyayı kullanıcıya hizmet etmek için aşağıdaki kod parçasında gösterildiği yöntemini kullanıyorum.

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=filename.dat');
echo $data;
exit();

Ben diyalog cezası olarak kaydetmek olsun ve veri tek sorun kurtulmak cant çıktı dosyasının başında bir satır besleme karakteri olmasıdır mevcut.

Sadece bu yüzden verileri kullanan uygulama boşluk duyarlıdır ve güncellemek için kullanıcıların zorlama, bu düzeltmek kolay olurdu ancak ben çeşitli nedenlerle aşağı gitmek istiyorum bir yol olmadığını olur.

Herkes bu neden ve daha da önemlisi herhangi bir geçici çözüm olduğunu biliyor mu.

4 Cevap

Zaten sorunun yorumlarda dediği gibi:

Ya $data bu hat beslemesi içeren ya da bu yaptığı pasajı önce bir şey var. Belki önce bir satır besleme PHP bloğu açıldı.

Muhtemelen ekstra satır bir şekilde $data giriyor. Bunu düzeltmek yapamıyorsanız, bunu echo olabilir trim() veri önce.

Eğer kuruyoruz nasıl gönderebilir miyim $data?

Sadece ek bir not.

Durumda size baştaki veya sondaki satır beslemeleri olan dosyaları, yeni hatları tespit edemez bir proje üzerinde çalışıyoruz, satırbaşları sadece başlıklarından önce aşağıdaki kodu arayın:

//Loop through any open buffers and nuke them.
while(@ob_end_clean()); 
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=filename.dat');
echo $data;
exit();

Bu, o tamponlar dayanır ancak çıkış tampon tamamen temizlemek için etkili bir yoldur kod bazı beklenmeyen yan etkileri olabilir.

Belki ob_get_contents or ob_get_length to see if anything has been sent to the output before the echo deyimi kullanabilirsiniz. Veya kullanım ob_clean before the echo.