【技术宅3】截取文件和url扩展名的N种方法
//截取文件扩展名的N种方法
//第1种
//strrchr() 函数查找字符在指定字符串中最后一次出现的位置,如果成功,则返回其后面的字符串
//返回带有点的扩展名
function get_extension($file){
return strrchr($file, '.');
}
echo get_extension("d.sdf.jpeg");
//第2种
//strchr() 函数查找字符在指定字符串中第一次出现的位置,如果成功,则返回其后面的字符串
//利用回调函数反复去掉所以的点.
//返回不带点的扩展名
function get_extension($file){
$res=trim(strchr($file,'.'),'.');
if(strchr($res,'.')){
$res=get_extension($res);//利用回调函数反复去掉所以的点.
}
return $res;
}
$file='fef.fadsf.fadsf.d.sdf.jpeg';
print_r( get_extension($file, '.'));
//用while循环
//strstr和strchr是同一个函数
$strstr = "fds.fdsaf.fdsa/fsda.ees.see.jpg";
while($strstr = strstr($strstr, ".")) {
$strstr = substr($strstr, 1);
if(false === strpos($strstr, ".")) {
break;
}
}
var_dump($strstr);
//第3种
//查找字符串在另一字符串中最后出现的位置(不区分大小写),返回位置数字;strrpos对大小写敏感
//返回带有点的扩展名
function get_extension($file){
$begin=strripos($file, '.');
return substr($file,$begin);
}
$file='d.sdf.jpeg';
echo get_extension($file, '.');
//第4种
//利用explode把文件名分割成数组,取数组中最后一个值即为文件的扩展名
//返回不带点的扩展名
function get_extension($file){
return end(explode('.', $file));
//另一种处理方式 return array_pop(explode('.', $path));
}
$file='d.sdf.jpeg';
echo get_extension($file, '.');
//第5种
//pathinfo() 函数以数组的形式返回文件路径的信息。数组元素:[dirname]、[basename]、[extension]
function get_extension($file){
$info = pathinfo($file);
return $info['extension'];
//另一种处理方式 return pathinfo($file, PATHINFO_EXTENSION);
}
$file='d.sdf.jpeg';
echo get_extension($file, '.');
//第6种
//正则匹配
//返回不带点的扩展名
$path = "fds/ees.see.jpg";
preg_match("/.+\.([^\.]+)/", $path,$array);
print_r($array[1]);
//第7种
//正则匹配
//返回不带点的扩展名
$path = "fds/ees.see.jpg";
echo (preg_replace('/.*\.(.*[^\.].*)*/iU','\\1',$path));
//第8种
//strtok 函数:把字符串分割为更小的字符串
//返回不带点的扩展名
$path = "fds/ees.see.jpg";
$strtok = strtok($path, ".");
while($strtok !== false){
$return = $strtok;
$strtok = strtok('.');
}
echo($return);
//获取url扩展名
//第1种
//返回不带点的扩展名
function getExt($url){
$path=parse_url($url);
$str=explode('.',$path['path']);
return $str[1];
}
echo getExt('http://tools.jb51.net/abc/de/fg.php?id=1'); //php
//第2种
function retrieve($url) {
preg_match('/\/([^\/]+\.[a-z]+)[^\/]*$/',$url,$match); //$match=Array ( [0] => /fg.php?id=1 [1] => fg.php )
return strrchr($match[1], '.'); //这里的可以套用截取文件扩展名的1、2、3、4、5、8种方法
}
print_r( retrieve('http://tools.jb51.net/abc/de/fg.php?id=1')); //.php
//第3种
//返回不带点的扩展名
function getExt($url){
$end=end(explode('/',$url));
if(stripos($end,'?')){//有参数时
$end=substr($end,0,stripos($end,'?'));
}
$str=explode('.',$end);
return $str[1];
}
【技术宅3】截取文件和url扩展名的N种方法的更多相关文章
- PHP中获取文件扩展名的N种方法
PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法:function get_extension($file){substr(strrchr($file, '.'), ...
- win7系统中如何使文件显示出扩展名
win7系统中如何使文件显示出扩展名-------------------- 1.点击计算机-->>点击组织,然后选择"文件夹及搜索选项"-->> ---- ...
- win7系统中如何使文件显示出扩展名或显示文件后缀名
win7系统中如何使文件显示出扩展名-------------------- 1.点击计算机-->>点击组织,然后选择“文件夹及搜索选项”-->> -------------- ...
- windows服务器设置文件属性设置去掉隐藏已知文件类型的扩展名(即文件后缀名可见)
摘要: 1.文件后缀名不可见,系统运维过程容易发生同名不同后缀的文件操作混淆的情况 2.windows系统默认是文件后缀名不可见 3.所以需要更改一下配置. 4.操作步骤如下图: (1)点击组织-文件 ...
- Delphi获取文件名、文件名不带扩展名、文件名的方法;delphi 获取文件所在路径
取文件名 ExtractFileName(FileName); 取文件扩展名: ExtractFileExt(filename); 取文件名,不带扩展名: 方法一: Function Extrac ...
- 运维系列之二 Linux文件种类和扩展名
一.文件种类 1.普通文件 用ls查看文件属性时,显示的是[-] 2.目录文件(directory) 文件属性第一个为[d] 3.连接文件(link) 类似于win下的快捷方式,文件第一个属性为[l] ...
- NO21 Llinux的文件种类与扩展名--文件权限--软硬链接--Linux删除文件原理
Linux的文件种类与扩展名 一.文件种类:1.普通文件(regular file)第一个字符为[ - ]包括:①纯文本档(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本档.是因为内 ...
- PHP获取文件后缀名的三种方法
如下: <? PHP获取文件后缀名的几种方法1: function get_file_type($filename){ $type = substr($filename, strrpos($fi ...
- Linux 中改变主机名的 4 种方法
今天,我们将向你展示使用不同的方法来修改主机名.你可以从中选取最适合你的方法. 使用 systemd 的系统自带一个名为 hostnamectl 的好用工具,它可以使我们能够轻易地管理系统的主机名. ...
随机推荐
- if form1.showmodal:=mrok then 什么意思
if form1.showmodal:=mrok then 这句话什么意思? 最佳答案 这个问题说来话长,且听我慢慢道来... 首先,你仔细看一看,所有的命令按钮(不论是Button还是BitBtn) ...
- C# 中的协变和逆变
作为一个从接触 Unity 3D 才开始学习 C# 的人,我一直只了解一些最基本.最简单的语言特性.最近看了<C# in Depth>这本书,发现这里面东西还真不少,即使除去和 Windo ...
- lightoj 1036 dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1036 #include <cstdio> #include <cst ...
- 京东集团副总裁李大学:像CEO一样思考 - Dancen的专栏 - 博客频道 - CSDN.NET
京东集团副总裁李大学:像CEO一样思考 - Dancen的专栏 - 博客频道 - CSDN.NET 京东集团副总裁李大学:像CEO一样思考
- Goole音乐搜索
本博文的主要内容有 .Goole音乐搜索的介绍 1.Goole音乐搜索的介绍 https://zh.wikipedia.org/wiki/%E8%B0%B7%E6%AD%8C%E9%9F%B3% ...
- php环境下ckeditor和ckfinder的配置详解
摘要:老牌编辑器FCK的升级版CKEditor(http://ckeditor.com/) 经过重写,提供了丰富而强大的集成和互动的API.新版编辑器是完全基于插件,它可以扩展所有部件以符合需求.FC ...
- DB2 insert into 三种写法
db2的insert into 支持三种格式,即:一次插入一行,一次插入多行和从SELECT语句中插入. 以表为例: create table “user" ( "name&quo ...
- NDK安装 eclipse 不出现NDK目录问题
android adt自带eclipse无法设置ndk路径 具体情况是 我在mac上搭建android环境 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的 ...
- 第二篇:从 GPU 的角度理解并行计算
前言 本文从使用 GPU 编程技术的角度来了解计算中并行实现的方法思路. 并行计算中需要考虑的三个重要问题 1. 同步问题 在操作系统原理的相关课程中我们学习过进程间的死锁问题,以及由于资源共享带来的 ...
- GRADLE 构建最佳实践
随着谷歌对Eclipse的无情抛弃和对Android Studio的日趋完善,使用gradle构建Android项目已经成为开发者的一项必会良技.那么,问题来了,采用什么样的姿势才能让项目开发构建过程 ...