`
- 浏览:
3419 次
- 性别:
- 来自:
合肥
-
PHP中获取文件扩展名的N种方法
从网上收罗的,基本上就以下这几种方式:
第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有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。
没有文件扩展名
路径中包含了字符.,如/home/test.d/test.txt
路径中包含了字符.,但文件没有扩展名。如/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的常量。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
接下来,文章详细介绍了PHP中获取文件扩展名的多种方法。首先提到了四种方法,每一种方法通过不同的PHP函数来实现: 1. 使用substr函数和strrchr函数组合: ```php function get_extension($file) { return substr...
在PHP开发中,获取文件的扩展名是一个常见的需求,尤其是...在处理文件扩展名时,尤其要注意文件名可能包含多个点、目录中可能含有点、以及文件可能没有扩展名这三种特殊情况,正确的处理方法可以避免很多潜在的问题。
本文将详细介绍一种PHP从给定URL获取文件扩展名的方法,并提供一个实例来解释其工作原理。 首先,我们要明白URL的结构,通常它由协议(如http或https)、主机名、路径以及可能的查询参数组成。在路径部分,文件名...
可以使用`pathinfo()`函数获取文件的扩展名,然后进行比较。 ```php $file_extension = pathinfo($file, PATHINFO_EXTENSION); if ($file_extension === 'txt') { // 替换'txt'为你需要的后缀 // 文件后缀匹配,...
获取文件路径信息可以通过`pathinfo()`函数实现,它返回一个数组,包含路径名、文件名、扩展名等信息: ```php print_r(pathinfo("c:\mytools\a.txt")); ``` 取绝对路径的操作使用`realpath()`函数,它返回给定...
2. 解压与安装:下载完成后,解压文件,将php_sqlsrv.so(Windows下为php_sqlsrv.dll)文件复制到PHP的扩展目录(如php/ext)中。 3. 配置PHP:编辑php.ini文件,添加以下行以启用驱动: ``` extension=...
在给定的压缩包文件`pinyin-master`中,可能包含了一个名为“pinyin”的PHP库,这个库专门用于将汉字转换为拼音。在实际开发中,我们可以直接引入这个库,通过调用其提供的函数来完成我们的需求。 1. **安装与引...
压缩包名为`phpredis-develop`,通常可以从GitHub上获取最新版本。你可以使用`wget`或`curl`来下载,例如: ```bash wget https://github.com/phpredis/phpredis/archive/develop.zip unzip develop.zip cd ...
或者根据实际编译后的扩展名进行调整。 5. **重启PHP服务**:确保更改生效,需要重启PHP-FPM或Apache/Nginx等服务器。 6. **验证安装**:在PHP环境中运行`php -m`命令,如果看到`redis`出现在模块列表中,表示...
本文将介绍一种方法,即如何在PHP中逐行读取超大文件而不让程序崩溃,并且还会提供如何获取文件最后几行数据的具体示例代码。 在PHP中读取超大文件的一个基本策略是逐行读取,这通常涉及到使用fopen(), fgets(), ...
在PHP开发中,处理音频文件时,获取音频元数据是一项常见的需求,比如音乐的时长、比特率、采样率等信息。`getID3`是一个强大的PHP库,专为解析音频文件的元数据而设计,它支持多种音频格式,如MP3、WAV、AAC等。...
尽管不是最可靠的方法,但有时可以通过文件扩展名来大致判断文件类型。以下示例展示了基于文件扩展名的简单判断: ```php switch ($typeCode) { case 'mid': $fileType = 'midi'; break; // 其他情况... ...
在PHP中,可以使用`mysqli`或`PDO`扩展来完成这一操作。下面是一个使用`mysqli`的例子: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_...
创建一个名为`index.php`的文件,并包含以下内容: ```php <?php echo 'Current PHP version: ' . phpversion(); phpinfo(); phpinfo(INFO_MODULES); ?> ``` 将该文件放置于IIS默认网站的根目录下,并通过浏览器访问...
通过将经常访问的数据存储到缓存文件中,可以避免每次请求时都从数据库或其他慢速数据源获取数据,从而显著加快响应时间。本文将深入探讨如何使用PHP编写函数来实现缓存文件的写入和读取。 首先,我们来看`write_...
PHP中获取目录列表通常是为了列出一个文件夹内的所有文件和子目录,这是一个在网站文件管理、上传下载功能、或者任何形式的文件浏览中都会用到的基础功能。本文将详细介绍一种简单的方法来实现该功能,并涉及相关...
在PHP中,处理zip文件是一项常见的任务,例如用于文件打包、备份或下载。本文将详细介绍如何使用PHP读取和操作zip文件,通过实例代码和解释,帮助开发者掌握这一技能。 首先,我们需要引入PHP的zip扩展,该扩展允许...
3. **文件类型判断**:为了筛选出特定格式的图片文件(如.jpg, .gif, .png, .bmp),代码使用了一个数组`$fileFormat`存储了这些扩展名。通过`substr()`函数和`strpos()`函数来检查当前文件名是否匹配这些格式。如果...