I () PHP bir dosyanın içeriğini ing patlayabilir için \ r veya \ n kullanmalı mıyım?

4 Cevap php

Ben bir yerel bir metin dosyasında file_get_contents() yoluyla alınır ya dize veya bir url böyle http://site.com/338383.txt gibi abartılı bir şey kabul edebilir bir işlevi oluşturma.

Dosya kendi satırında olmak dosyasındaki her bir madde ile, bir sekme ayrılmış dosya olacak. O explode() dize \n veya \r kullanmak ve her satırın bir dizisini almak için daha iyi mi?

Bazı durumlarda \n çalışmıyor fark ettik. Ben her zaman çalışır tutarlı bir yol istiyorum. Herhangi bir düşünce?

4 Cevap

Sen file(), bireysel hatları ile dizi olarak dosyanın içeriğini almak için kullanabilirsiniz.

duckyflip belirttiği gibi, dosya çizgilerin bir dizisini almak için file() işlevini kullanabilirsiniz. Hala (bilinmeyen bir nedenle) patlayabilir gerekiyorsa bu çapraz platform uyumlu olduğu gibi Ancak, bunun yerine '\ n' PHP sabiti PHP_EOL kullanmalısınız.

Sorun newline farklı "metin / düz" kodlamaları ve platformlar için farklı tanımlanır olmasıdır. Kirli hızlı ve çözüm muhtemelen bölünmüş ve normal ifadeyi kullanmak olacaktır "\ r \ n | \ r | \ n", ancak bazı unicode dosyaları bozabilir ve "bağlam" duygusu yok. Yani LF (\ n) bir EOL marker olarak kullanılan bir dosya var, ve korunmuş olmalıdır orada bazı CRs varsa, CR gibi iyi bölünecektir.

Sen preg_split () / \ n \ r tarafından patlamaya kullanabilirsiniz | \ n | \ r /, ve sonra trim () her madde olmadığından emin sondaki boşluk kalan emin olmak için (uygun ise) .