常用知识 - 获取文件后缀 ¶
作者:KK
发表日期:2017.9.21
不靠谱思路1:找到最后一个.
号位置开始substr ¶
你是想这样嘛:
$filepath = 'D:/a/b.jpg';
$pos = strrpos($filepath, '.');
if($pos === false){
exit('该文件没有后缀');
}
echo substr($filepath, $pos + 1); // jpg
你可能忽略了目录名也能带.
号,于是看看这样会如何:
$filepath = 'D:/a.b/c'; // 注意 . 号在中间目录里
$pos = strrpos($filepath, '.');
if($pos === false){
exit('该文件没有后缀');
}
echo substr($filepath, $pos + 1); // b/c
不靠谱思路2:以.
号explode再取最后一个元素 ¶
$filepath = 'D:/a.b/c';
$items = explode('.', $filepath);
if(count($items) == 1){
exit('该文件没有后缀');
}
echo end($items); // b/c
靠谱思路:用pathinfo函数取出信息 ¶
$filepath = 'D:/a.b/c.jpg';
$info = pathinfo($filepath);
if(!isset($info['extension'])){
exit('该文件无后缀');
}
echo $info['extension'];
其实pathinfo还能用得更简单 ¶
echo pathinfo('D:/a.b/c', PATHINFO_EXTENSION); // 空
echo pathinfo('D:/a.b/c.jpg', PATHINFO_EXTENSION); // jpg
//URL不行
echo pathinfo('http://xxx.com/a.b/c.png?aa=11&bb=22', PATHINFO_EXTENSION); // png?aa=11&bb=22
获取URL所指的文件类型 ¶
$url = 'http://xxx.com/a.b/c.png?aa=11&bb=22';
$urlInfo = parse_url($url);
if(isset($urlInfo['path'])){
$info = pathinfo($urlInfo['path']);
if(!isset($info['extension'])){
exit('该文件无后缀');
}
echo $info['extension']; // png
//顺便也能取出文件名
echo basename($urlInfo['path']); // c.png
}