nasıl farklı bir hat sonlandırma php okur kullanabilir?

2 Cevap php

Ben linux üzerinde M $ Excel tarafından oluşturulan bir CSV dosyasını okumak için çalışıyorum.

Dosya multi-line (x0A ayrılmış) sütun ve bir 0x0d0a hat sonlandırma sözleri yer aldı.

Linux üzerinde PHP satır sonlandırıcı olarak 0x0A kullanır, böylece tüm hat-tabanlı araçları (dosya, fgets, fgetcsv) veri hücrelerin ortasında rekor sonları vardır düşünüyor.

Bayt tarafından dosya bayt işleme Kısa, geçici olarak çizgi karakteri (PHP_EOL sabit) PHP'nin sonunu değiştirebilir böylece kolayca dosya ayrıştırma yapabilir.

Ben "$ \" ile perl'de yapılabilir düşünüyorum. PHP benzer bir şey var mı?

Ben bayt bayt ayrıştırmak farkındayım, ama temiz bir yaklaşım arıyorum.

2 Cevap

Bir conceptDawg önerisi auto_detect_line_endings işe yaramazsa kırmaya) (ben file_get_contents () üzerinden tüm dosya okuma tavsiye ederim ve daha sonra explode çağrı birden fazla satır halinde dosya. Eğer için explode() istersen karakter geçebilir

Sen 'auto_detect_line_endings' run-time yapılandırma seçeneğini kullanarak deneyebilirsiniz. Bu kullanarak otomatik olarak doğru satır sonlarını anlamaya söylüyor. Dokümanlar:

Açıldığında, PHP Unix, MS-Dos veya Macintosh satır sonlandırma kuralları kullanarak olup olmadığını görmek için) ((fgets tarafından okunan verileri incelemek) ve dosya olacaktır.

İlk satır için EOL kuralları tespit zaman çok küçük bir performans ceza olduğu gibi, bu, Kapalı Macintosh sistemleri, ancak varsayılan ile birlikte çalışan PHP sağlar, ve Unix sistemleri altında madde ayırıcı olarak satır döner kullanan insanlar deneyim olacaktır da çünkü non- geriye doğru uyumlu davranış.

Bu işe yaramazsa o zaman her zaman "doğru" karakterleri için onları yerine, bellek (dosya boyutuna bağlı olarak bu mümkün olmayabilir) içine dosyanın tamamını okumak ve söz konusu karakterler üzerinde bir preg_replace yapabilirdi.