`

转:PHP中获取文件扩展名的N种方法

阅读更多

转载链接:http://blog.csdn.net/yanfangphp/article/details/8633896

转载内容:

PHP中获取文件扩展名的方法,从网上收罗的,基本上就以下这几种方式:

//第1种方法:
function get_extension($file){
	substr(strrchr($file, '.'), 1);
}
//第2种方法:
function get_extension($file){
	return substr($file, strrpos($file, '.')+1);
}
//第3种方法:
function get_extension($file){
	return end(explode('.', $file));
}
//第4种方法:
function get_extension($file){
	$info = pathinfo($file);
	return $info['extension'];
}
//第5种方法:
function get_extension($file){
	return pathinfo($file, PATHINFO_EXTENSION);
}

以上几种方式粗看了一下,好像都行,特别是1、2种方法,在我不知道pathinfo有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况:

1、没有文件扩展名
2、路径中包含了字符.,如/home/test.d/test.txt
3、路径中包含了字符.,但文件没有扩展名。如/home/test.d/test

 

很明显:1、2不能处理第三种情况,3不能正确处理第一三种情况。4可以正确处理,但是在不存在扩展名时,会发出一个警告。只有第5种方法才是最正确的方法。顺便看一下pathinfo方法。官网上介绍如下:
$file_path = pathinfo('/www/htdocs/your_image.jpg');

echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+
它会返回一个数组,包含最多四个元素,但是并不会一直有四个,比如在没有扩展名的情况下,就不会有extension元素存在,所以第4种方法才会发现警告。但是phpinfo还支持第二个参数。可以传递一个常量,指定返回某一部分的数据:
PATHINFO_DIRNAME - 目录
PATHINFO_BASENAME - 文件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)
这四个常量的值分别是1、2、4、8,刚开始我还以为可以通过或运算指定多个:
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
后来发现这样不行,这只会返回几个进行或运算常量中最小的那个。也就是四个标志位中最小位为1的常量。

分享到:
评论

相关推荐

    php文件扩展名判断及获取文件扩展名的N种方法

    在PHP编程中,获取文件扩展名是一个常见的任务,特别是在处理用户上传文件或者验证文件类型时。本文将介绍几种不同的PHP方法来实现这一功能,并重点分析它们的优缺点以及最佳实践。 首先,我们来看一个HTML示例,这...

    PHP中获取文件扩展名的N种方法小结

    在PHP开发中,获取文件的扩展名是一个常见的需求,尤其是...在处理文件扩展名时,尤其要注意文件名可能包含多个点、目录中可能含有点、以及文件可能没有扩展名这三种特殊情况,正确的处理方法可以避免很多潜在的问题。

    php从给定url获取文件扩展名的方法

    本文将详细介绍一种PHP从给定URL获取文件扩展名的方法,并提供一个实例来解释其工作原理。 首先,我们要明白URL的结构,通常它由协议(如http或https)、主机名、路径以及可能的查询参数组成。在路径部分,文件名...

    php-sqlsrv 驱动php7.1 - php7.4

    2. 解压与安装:下载完成后,解压文件,将php_sqlsrv.so(Windows下为php_sqlsrv.dll)文件复制到PHP的扩展目录(如php/ext)中。 3. 配置PHP:编辑php.ini文件,添加以下行以启用驱动: ``` extension=...

    linux安装phpredis扩展

    压缩包名为`phpredis-develop`,通常可以从GitHub上获取最新版本。你可以使用`wget`或`curl`来下载,例如: ```bash wget https://github.com/phpredis/phpredis/archive/develop.zip unzip develop.zip cd ...

    php7 redis扩展

    或者根据实际编译后的扩展名进行调整。 5. **重启PHP服务**:确保更改生效,需要重启PHP-FPM或Apache/Nginx等服务器。 6. **验证安装**:在PHP环境中运行`php -m`命令,如果看到`redis`出现在模块列表中,表示...

    php获取汉子拼音/拼音首字母

    在给定的压缩包文件`pinyin-master`中,可能包含了一个名为“pinyin”的PHP库,这个库专门用于将汉字转换为拼音。在实际开发中,我们可以直接引入这个库,通过调用其提供的函数来完成我们的需求。 1. **安装与引...

    PHP实现遍历某一目录下的所有文件并将特定后缀文件复制到特定目录

    可以使用`pathinfo()`函数获取文件的扩展名,然后进行比较。 ```php $file_extension = pathinfo($file, PATHINFO_EXTENSION); if ($file_extension === 'txt') { // 替换'txt'为你需要的后缀 // 文件后缀匹配,...

    基于PHP文件操作的详解

    获取文件路径信息可以通过`pathinfo()`函数实现,它返回一个数组,包含路径名、文件名、扩展名等信息: ```php print_r(pathinfo("c:\mytools\a.txt")); ``` 取绝对路径的操作使用`realpath()`函数,它返回给定...

    getID3 (php)

    在PHP开发中,处理音频文件时,获取音频元数据是一项常见的需求,比如音乐的时长、比特率、采样率等信息。`getID3`是一个强大的PHP库,专为解析音频文件的元数据而设计,它支持多种音频格式,如MP3、WAV、AAC等。...

    PHP5手动最简安装方法

    接下来,解压该文件到指定目录,例如`N:\imp\php\php5.2.8`。需要注意的是,此路径应根据个人情况适当调整,如使用`E:\Program Files\php`等。 #### 配置环境变量 为了使系统能够正确识别PHP的执行路径,我们需要将...

    PHP 文件类型判断代码

    尽管不是最可靠的方法,但有时可以通过文件扩展名来大致判断文件类型。以下示例展示了基于文件扩展名的简单判断: ```php switch ($typeCode) { case 'mid': $fileType = 'midi'; break; // 其他情况... ...

    php将文本文件转换csv输出的方法

    此外,如果原始文本文件使用的是不同的行分隔符,比如"\r\n"(Windows系统中常用),在转换成CSV格式时,可能需要将其替换为通用的行分隔符"\n"(UNIX/Linux系统中常用)。 在将文本文件转换为CSV格式后,我们就...

    php实现读取超大文件的方法

    本文将介绍一种方法,即如何在PHP中逐行读取超大文件而不让程序崩溃,并且还会提供如何获取文件最后几行数据的具体示例代码。 在PHP中读取超大文件的一个基本策略是逐行读取,这通常涉及到使用fopen(), fgets(), ...

    PHP中文手册 php必备的

    PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域中扮演着核心角色。PHP中文手册是学习和理解PHP语法、函数、类库以及各种概念的重要资源,对于PHP开发者来说,它是不可或缺的参考...

    RabbitMQ 的windows php 扩展php_amqp-1.2.0-5.3-ts-vc9-x86.dll

    除了`php_amqp.dll`,压缩包中还包括`rabbitmq.1.dll`,这是RabbitMQ C库的动态链接库文件,用于PHP AMQP扩展与RabbitMQ服务器通信。`php_amqp.pdb`和`rabbitmq.1.pdb`则是调试符号文件,它们在开发和调试过程中提供...

    phpredis扩展

    配置文件,添加`extension=redis.so`(或根据实际情况调整为相应的扩展名) - 重启PHP服务使配置生效。 **二、phpredis功能及用法** 1. 连接Redis服务器:使用`new Redis()`创建Redis对象,然后调用`connect()`或...

Global site tag (gtag.js) - Google Analytics