PHP函数来获取文件扩展名

时间:2011-05-17 15:41:03

标签: php file-upload filenames deprecated file-extension

任何人都可以帮我改变这个脚本,使用preg_split(建议用php.net替代)而不是不再使用的split。此函数获取变量$ filename。

中任何上传文件的文件扩展名
function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}

7 个答案:

答案 0 :(得分:16)

您应该只使用pathinfo

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0

答案 1 :(得分:2)

而不是split,您可以使用explode。由于您只想要扩展名,因此没有理由按/拆分,只需按点分割,然后使用array_pop获取最后一个元素。

答案 2 :(得分:2)

我更喜欢function David Walsh posted,它使用“strrchr”函数来获取最后一次出现的“。”。在一个字符串中。


function get_file_extension($file_name)
{
  return substr(strrchr($file_name,'.'),1);
}

答案 3 :(得分:1)

为什么不使用此功能:http://www.php.net/manual/fr/function.finfo-file.php或此功能:http://fr2.php.net/manual/fr/function.pathinfo.php

你也可以使用explode

function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = explode(".", $filename) ;
   $n = count($exts)-1;
   $exts = $exts[$n];
   return $exts;
}

答案 4 :(得分:1)

如果文件扩展名是您想要的唯一部分:

function GetExt($filename) {
    return (($pos = strrpos($filename, '.')) !== false ? substr($filename, $pos+1) : '');
}

答案 5 :(得分:0)

也许是这些方面的东西?

$string = "some/path_to_a_file.txt";
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); 

答案 6 :(得分:0)

我的代码将提供文件扩展名,删除查询字符串。 pathinfo也返回带字符串的扩展名。如果你想知道确切的文件名,请使用我的代码:

$filename = 'http://doamin/js.jquery.min.js?v1.1.11';    
preg_replace('/\?.*/', '', substr(strrchr($filename, '.'), 1));

// output: js