【技术宅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];

       }

 

posted @ 2014-09-21 19:29  来自星星的bug  阅读(471)  评论(0编辑  收藏  举报