从文件中获取扩展名

时间:2012-02-12 19:17:53

标签: php

$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步,有人能够解释吗? 而且从不使用方法是什么意思?

2 个答案:

答案 0 :(得分:2)

不使用此方法的最明显原因是split() function is deprecated in PHP 5.3,将在以后的版本中删除。不应该使用它,因为该功能将消失。

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

答案 1 :(得分:0)

所有这些方法,你都错过了内置函数:

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

这并没有直接回答你关于方法编号#5的问题......但为什么要搞乱所有这些方法并忽略PHP为你明确提供的内容?