Satır php metin dosyası doğrultusunda Oku - satır tespit olmamak

4 Cevap php

Ben bir tabloda kendi satırında her satır bir metin dosyası almak ve listeler olduğunu yazdı bir php fonksiyonu var.

Sorun klasik "benim makine üzerinde çalışıyor", ama ben arıyorum. Txt dosyası oluşturmak için başka birini sorduğunuzda tabii, 1 satır olarak tüm dosyasında okuma devam ediyor. Benim metin editörü açtığınızda, sadece ben her satırda yeni bir adla beklediğiniz nasıl gibi görünüyor, ama satır karakteri ya da bir şey onu atma.

Şimdiye kadar ben onların Mac sisteminde kullandığınız her türlü metin editörü ile ilgili bir şey olabilir sonuca gelmiş.

Bu mantıklı mı? ve sadece yeni bir çizgi olarak metin editörü tanıyarak bu karakteri algılar ve tanıyacak php standart bir biri ile değiştirmek için kolay bir yolu var mı?

GÜNCELLEME: Aşağıdaki satırı ekleme sorunu çözüldü.

ini_set('auto_detect_line_endings',true);

Fonksiyon:

function displayTXTList($fileName) {
    if(file_exists($fileName)) {
        $file = fopen($fileName,'r');
        while(!feof($file)) { 
            $name = fgets($file);
            echo('<tr><td align="center">'.$name.'</td></tr>');
        }
        fclose($file);
    } else {
        echo('<tr><td align="center">placeholder</td></tr>');
    }       
}

4 Cevap

Man sayfasından fgets:

Not: ya veya bir Macintosh bilgisayar tarafından oluşturulan dosyaları okurken PHP düzgün auto_detect_line_endings çalışma zamanı yapılandırma seçeneği sorunu gidermek yardımcı olabilir sağlayarak, satır sonlarını tanıma değilse.

Ayrıca, file fonksiyonunu denediniz mi? Bu bir dizi döndürür; Dizideki her öğe dosyasındaki bir satıra karşılık gelmektedir.

Düzenle: php.ini erişiminiz yoksa, ne web sunucu kullanıyorsunuz? Apache içinde a .htaccess file PHP kullanarak ayarları değiştirebilirsiniz. Zamanında ayarlarını değiştirme sağlar ini_set fonksiyonu da vardır.

Bu satır sorunun klasik bir durumdur.

ASCII birkaç farklı "satır" karakterleri tanımlar. Umrumuzda iki özel olanlar ASCII 10 (satır besleme, LF) ve 13 (satırbaşı, CR) vardır.

Vs OS X, Linux, dahil tüm Unix tabanlı sistemler, bir satır olarak LF kullanacağız. Mac OS Classic sadece farklı olmak için CR kullanılan ve Windows (yani, bir satır için iki karakter doğru - kimse Sadece şaka Windows'u seviyor neden görmek?) CR LF kullanan bir satır olarak.

Bu nedenle, bir Mac üzerinde birinden metin dosyaları tüm çizgi biten olarak ŞB olurdu (modern bir işletim sistemi bulunuyor varsayarak). Windows üzerinde onları okumak için çalışıyoruz, ve Windows CR LF bekliyorsa, onu bulamazsınız. Şimdi, it has already been mentioned PHP sizin için bu karmaşayı çözmek için yeteneği var, ama eğer isterseniz, burada bir bellek hogging çözüm olduğunu:

$file = file_get_contents("filename");
$array = split("/\012\015?/", $file); # won't work for Mac Classic

Tabii ki, sizinle aynı şeyi yapabilirsiniz file() (as has already been mentioned).