从文件获取扩展名


Getting extension from file

$filename = 'mypic.gif';
// 1. The "explode/end" approach
 $ext = end(explode('.', $filename));
// 2. The "strrchr" approach
 $ext = substr(strrchr($filename, '.'), 1);
// 3. The "strrpos" approach
 $ext = substr($filename, strrpos($filename, '.') + 1);
 // 4. The "preg_replace" approach
 $ext = preg_replace('/^.*'.([^.]+)$/D', '$1',    $filename);
 // 5. The "never use this" approach.    
  //   From: http://php.about.com/od/finishedphp1/qt/file_ext_PHP.htm
 $exts = split("[/''.]", $filename);
 $n = count($exts)-1;
 $ext = $exts[$n];

我在理解第 5 步时遇到麻烦,有人能解释吗?还有从不使用方法是什么意思?

不使用此方法的最明显原因是 split() 函数在 PHP 5.3 中被弃用,并将在更高版本中删除。不应使用它,因为该功能将消失。

此外,如果文件名没有扩展名,则在尝试从$exts[$n]访问扩展名时,您将收到Undefined index通知,因为未设置$exts[-1]。这是因为当文件名中没有.时,$exts数组为空(count($exts) === 0(,但代码没有考虑到这种可能性。

所有这些

方法,你都缺少内置函数:

$filename = 'mypic.gif';
$extension = pathinfo($filename,PATHINFO_EXTENSION);
var_dump($extension);

这并不能直接回答你关于方法#5的问题......但是你为什么要搞砸所有这些方法,而忽略了PHP明确提供的内容来为你做到这一点呢?