'da Dosya ASCII veya İkili olup olmadığını nasıl kontrol edilir Bir dosya ASCII veya PHP ile ikili olup olmadığını kontrol etmek için hızlı, basit bir yolu var mı?PHP
PHP
cevap
Bu yalnızca PHP> = 5.3.0 için çalışır ve% 100 güvenilir değildir, ancak hey, oldukça darn yakındır.
// return mime type ala mimetype extension
$finfo = finfo_open(FILEINFO_MIME);
//check to see if the mime-type starts with 'text'
return substr(finfo_file($finfo, $filename), 0, 4) == 'text';
Mükemmel cevap. + 1 – Cosine
Bağlantı bozuk: http://php.net/manual/en/book.fileinfo.php –
muhtemelen 'if (! $ Finfo) {echo "Açılış file dosyası veritabanı başarısız" kontrol etmeli; çıkış(); } 've unutma:' finfo_close ($ finfo); '... –
ASCII yalnızca metin için bir ikili kodlama olduğundan, gerçekten değil. Tüm baytların 128'den az olduğunu kontrol edebilirsiniz, ancak bu bile ASCII olarak kodunun çözülmeyi amaçladığını garanti etmez. Bildiğiniz her şey için, çılgın bir görüntü formatı ya da tüm sekiz biti kullanmayan tamamen farklı bir metin kodlaması. Yine de, kullanımınız için yeterli olabilir. Bir dosyanın geçerli bir ASCII olup olmadığını kontrol etmek istiyorsanız, "metin dosyası" olmasa bile, kesinlikle yeterli olacaktır.
gibi bir şey:
<?php
$probably_binary = (is_string($var) === true && ctype_print($var) === false);
mükemmel değil, ama bazı durumlarda yararlı olabilir.
Sekmeler ve satır başı dönüşleri' ctype_print() 'nı döndürür, maalesef FALSE döndürür. – dotancohen
Bu daha önce sorulmuştur, ama her zaman merak ediyorum, ascii veya ikili olup olmadığını neden umursuyorsunuz? – Pyrolistical
Benzer, ancak yinelenen değil. Bu, kolay, teknik bir cevaba sahipken, sözde aynı soru oldukça zordur. Bir dosyanın X'i kodlamada mı yoksa hiç kodlamada mı olduğunu sorma arasında büyük bir fark var. –
Tekrar okudum, bu türler sadece örnek. O aynı şey ikili vs metin arıyor – Pyrolistical