2010-09-08 172 views
3

我正在做一個搜索引擎對我們的巨大的PHP代碼庫。如何判斷文件是否是使用PHP的文本?

給定一個文件路徑,如何確定某個文件是文本文件還是某種其他類型?我寧願不要有訴諸文件擴展名(如substr($filename, -3)或一些愚蠢的),因爲這是一個基於Linux的文件系統,所以任何竟把文件擴展名的關注。

我使用RecursiveDirectoryIterator,所以我也可以過的那些方法..

回答

0

您可以調用file實用程序:

echo `file '$file'`; 

返回之類的東西:

$ file test.out 
test.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped 

$ file test.cpp 
test.cpp: ASCII C program text 

$ file test.txt 
test.txt: ASCII text 

$ file test.php 
test.php: PHP script text 
+0

Bill Karwin的建議(finfo)使用與文件實用程序相同的庫。這將是雖然速度更快,因爲它是一個PHP擴展 – Evert 2010-09-08 18:05:59

+0

@Evert的確,肯定的方式,如果你用PHP沿着具有延伸走> = 5.3 – meagar 2010-09-08 18:06:52

1
if (mime_content_type($path) == "text/plain") { 
echo "I'm a text file"; 
} 
+2

是的,但要注意,它不贊成贊成PHP5.3的'finfo_file' – Gordon 2010-09-08 18:03:24

0

嘗試使用: string mime_content_type (string $filename )

希望這是有幫助的。

William Choi

相關問題