【问题标题】:PHP function to get file extension [duplicate]获取文件扩展名的PHP函数[重复]
【发布时间】:2011-08-27 08:46:34
【问题描述】:

谁能帮我更改这个脚本以使用 preg_split(php.net 推荐的替代品)而不是不再使用的 split。此函数在变量 $filename 中获取任何上传文件的文件扩展名。

function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}

【问题讨论】:

    标签: php file-upload filenames deprecated file-extension


    【解决方案1】:

    我的代码将给出文件扩展名,删除查询字符串。 pathinfo 还返回带有字符串的扩展名。因此,如果您想知道确切的文件名,请使用我的代码:

    $filename = 'http://doamin/js.jquery.min.js?v1.1.11';    
    preg_replace('/\?.*/', '', substr(strrchr($filename, '.'), 1));
    
    // output: js
    

    【讨论】:

      【解决方案2】:

      也许是这样的?

      $string = "some/path_to_a_file.txt";
      $pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); 
      

      【讨论】:

        【解决方案3】:

        我更喜欢function David Walsh posted,它使用“strrchr”函数来获取“.”的最后一次出现。在一个字符串中。

        
        function get_file_extension($file_name)
        {
          return substr(strrchr($file_name,'.'),1);
        }
        

        【讨论】:

          【解决方案4】:

          您可以使用explode 而不是split。由于您只想要扩展名,因此没有理由按/ 拆分,只需按点拆分并使用array_pop 获取最后一个元素。

          【讨论】:

          • 似乎“爆炸”可能是文件扩展名查找标准。谢谢
          【解决方案5】:

          如果文件扩展名是您想要的唯一部分:

          function GetExt($filename) {
              return (($pos = strrpos($filename, '.')) !== false ? substr($filename, $pos+1) : '');
          }
          

          【讨论】:

            【解决方案6】:

            你为什么不用这个功能:http://www.php.net/manual/fr/function.finfo-file.php 或者这个:http://fr2.php.net/manual/fr/function.pathinfo.php

            你也可以使用爆炸

            function findExtension ($filename)
            {
               $filename = strtolower($filename) ;
               $exts = explode(".", $filename) ;
               $n = count($exts)-1;
               $exts = $exts[$n];
               return $exts;
            }
            

            【讨论】:

            • 这是理解“爆炸”功能的一种更简单的方法。谢谢
            【解决方案7】:

            你应该改用pathinfo

            $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
            
            echo $path_parts['dirname'], "\n";
            echo $path_parts['basename'], "\n";
            echo $path_parts['extension'], "\n";
            echo $path_parts['filename'], "\n"; // since PHP 5.2.0
            

            【讨论】:

              猜你喜欢
              • 2012-03-24
              • 1970-01-01
              • 2015-02-14
              • 2012-09-12
              • 2017-10-28
              • 2011-11-25
              • 2012-10-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多