如何在不知道扩展名的情况下检查文件是否已存档(zip或rar)。我需要使用php找到它。

我无法使用Fileinfo,因为没有安装Fileinfo,并且无法在服务器上安装任何其他软件包。

更新:

zip 模块未安装,我无法安装额外的软件包。
我不想使用mime_content_type,因为它已弃用

谢谢

最佳答案

od -c的输出:

  0000000    R   a   r   ! 032  \a  \0 317 220   s  \0  \0  \r  \0  \0  \0

  0000000    P   K 003 004  \n  \0  \0  \0  \0  \0  \0  \0   !  \0  \0  \0

您可以使用以下方式:
<?php

$fh = @fopen($argv[1], "r");

if (!$fh) {
  print "ERROR: couldn't open file.\n";
  exit(126);
}

$blob = fgets($fh, 5);

fclose($fh);

if (strpos($blob, 'Rar') !== false) {
  print "Looks like a Rar.\n";
} else
if (strpos($blob, 'PK') !== false) {
  print "Looks like a ZIP.\n";
} else {
  print "I dunno.\n";
  exit(1);
}

?>

和我的输出:
ghoti@baz:~ 423$ ./filephp.php A2.rar
Looks like a Rar.
ghoti@baz:~ 424$ ./filephp.php OLDIE.zip
Looks like a ZIP.
ghoti@baz:~ 425$ ./filephp.php 1-11-1.PDF
I dunno.
ghoti@baz:~ 426$

关于php - 使用php检查文件是否已存档(zip或rar),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9098678/

10-10 18:13