2010-09-08 125 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

相关问题