복붙노트

PHP에서 파일 확장자를 가져 오는 방법은 무엇입니까?

카테고리 없음

PHP에서 파일 확장자를 가져 오는 방법은 무엇입니까?

이것은 여러 가지 대답으로 웹상의 모든 곳에서 읽을 수있는 질문입니다.

$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);

$exts = split("[/\\.]", $filename);
$n    = count($exts)-1;
$ext  = $exts[$n];

기타

그러나 항상 "최선의 방법"이 있으며 스택 오버플로에 있어야합니다.

해결법

  1. ==============================

    1.

    다른 스크립팅 언어를 사용하는 사람들은 PHP가 아니라 PHP를 사용하는 기능을 내장하고 있기 때문에 항상 더 나은 것으로 생각합니다. (필자는 지금 pythonistas를보고 있습니다 :-)).

    실제로, 그것은 존재하지만, 그것을 아는 사람은 거의 없습니다. Pathinfo () 만나기 :

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    

    이것은 빠르고 내장되어 있습니다. pathinfo ()는 전달한 상수에 따라 정식 경로와 같은 다른 정보를 제공 할 수 있습니다.

    ASCII가 아닌 문자를 처리하려면 먼저 로켈을 설정해야합니다. E.G :

    setlocale(LC_ALL,'en_US.UTF-8');
    

    또한 파일 내용이나 MIME 형식을 고려하지 않고 확장자 만 가져옵니다. 그러나 그것은 당신이 요구 한 것입니다.

    마지막으로 PARSE_URL을 사용하여 다루는 URL ressources 경로가 아닌 파일 경로에서만 작동합니다.

    즐겨

  2. ==============================

    2.

    pathinfo ()

    $path_info = pathinfo('/foo/bar/baz.bill');
    
    echo $path_info['extension']; // "bill"
    
  3. ==============================

    3.

    예 : url은 http://example.com/myfolder/sympony.mp3?a=1&b=2#XYZ입니다.

    $x = pathinfo($url);
    $x['dirname']   🡺 'http://example.com/myfolder'
    $x['basename']  🡺 'sympony.mp3?a=1&b=2'         // <------- BAD !!
    $x['extension'] 🡺 'mp3?a=1&b=2'                 // <------- BAD !!
    $x['filename']  🡺 'sympony'
    

    $x = parse_url($url);
    $x['scheme']  🡺 'http'
    $x['host']    🡺 'example.com'
    $x['path']    🡺 '/myfolder/sympony.mp3'
    $x['query']   🡺 'aa=1&bb=2'
    $x['fragment']🡺 ''             //<----- this outputs hashtag "XYZ" only in case, when the link containing that hashtag was manually passed to function, because automatically, hashtags are not automatically detectable by PHP
    
    dirname(parse_url($url)['path'])                      🡺 /myfolder
    basename(parse_url($url))                             🡺 sympony.mp3
    pathinfo(parse_url($url)['path'], PATHINFO_EXTENSION) 🡺 mp3
    

    추신. 참고로, PHP 요청에서는 사용할 수없는 URL의 해시 태그 부분 (예 : #smth)이 자바 스크립트에서만 사용됩니다.

  4. ==============================

    4.

    SplFileInfo도 있습니다 :

    $file = new SplFileInfo($path);
    $ext  = $file->getExtension();
    

    이러한 객체를 문자열 대신 전달하면 더 나은 코드를 작성할 수 있습니다. 코드가 더 많이 사용됩니다. PHP 5.4부터 한 줄짜리 :

    $ext  = (new SplFileInfo($path))->getExtension();
    
  5. ==============================

    5.

    E-satis 응답은 파일 확장자를 결정하는 올바른 방법입니다.

    또는 파일 확장명을 사용하는 대신 fileinfo (http://us2.php.net/fileinfo)를 사용하여 파일 MIME 유형을 확인할 수 있습니다.

    다음은 사용자가 업로드 한 이미지를 처리하는 간단한 예입니다.

    // Code assumes necessary extensions are installed and a successful file upload has already occurred
    
    // Create a FileInfo object
    $finfo = new FileInfo(null, '/path/to/magic/file');
    
    // Determine the MIME type of the uploaded file
    switch ($finfo->file($_FILES['image']['tmp_name'], FILEINFO_MIME)) {        
        case 'image/jpg':
            $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
        break;
    
        case 'image/png':
            $im = imagecreatefrompng($_FILES['image']['tmp_name']);
        break;
    
        case 'image/gif':
            $im = imagecreatefromgif($_FILES['image']['tmp_name']);
        break;
    }
    
  6. ==============================

    6.

    1) 사용하고있는 경우 (PHP 5> = 5.3.6) 당신은 SplFileInfo :: getExtension을 사용할 수있다 - 파일 확장자를 얻는다.

    예제 코드

    <?php
    
    $info = new SplFileInfo('test.png');
    var_dump($info->getExtension());
    
    $info = new SplFileInfo('test.tar.gz');
    var_dump($info->getExtension());
    
    ?>
    

    그러면 출력됩니다.

    string(3) "png"
    string(2) "gz"
    

    2) (PHP 4> = 4.0.3, PHP 5)를 사용하는 경우 확장을 가져 오는 또 다른 방법은 pathinfo입니다

    예제 코드

    <?php
    
    $ext = pathinfo('test.png', PATHINFO_EXTENSION);
    var_dump($ext);
    
    $ext = pathinfo('test.tar.gz', PATHINFO_EXTENSION);
    var_dump($ext);
    
    ?>
    

    그러면 출력됩니다.

    string(3) "png"
    string(2) "gz"
    

    // 편집 : 괄호 제거

  7. ==============================

    7.

    때때로 pathinfo ($ path, PATHINFO_EXTENSION)를 사용하지 않는 것이 유용합니다. 예를 들면 다음과 같습니다 :

    $path = '/path/to/file.tar.gz';
    
    echo ltrim(strstr($path, '.'), '.'); // tar.gz
    echo pathinfo($path, PATHINFO_EXTENSION); // gz
    

    또한 pathinfo는 일반적으로 문제가 아니지만주의 할 점이없는 확장자에서 ASCII가 아닌 문자를 처리하지 못한다는 점에 유의하십시오.

  8. ==============================

    8.

    경로가 포함되어 있지 않으면 다음을 사용할 수도 있습니다.

    array_pop(explode('.',$fname))
    

    여기서 $ fname은 파일의 이름입니다 (예 : my_picture.jpg). 결과는 다음과 같습니다. jpg

  9. ==============================

    9.

    PHP에서 파일 확장자를 얻는 가장 간단한 방법은 PHP 내장 함수 pathinfo를 사용하는 것입니다.

    $file_ext = pathinfo('your_file_name_here', PATHINFO_EXTENSION);
    echo ($file_ext); // the out should be extension of file eg:-png, gif, html
    
  10. ==============================

    10.

    substr($path, strrpos($path, '.') + 1);
    
  11. ==============================

    11.

    다음은 예제입니다. $ filename이 "example.txt"

    $ext = substr($filename,strrpos($filename,'.',-1),strlen($filename));  
    

    그래서 $ ext는 ".txt"가 될 것입니다.

  12. ==============================

    12.

    빠른 수정은 이와 같은 것입니다.

        //exploding the file based on . operator
        $file_ext = explode('.',$filename);
    
        //count taken (if more than one . exist; files like abc.fff.2013.pdf
        $file_ext_count=count($file_ext);
    
        //minus 1 to make the offset correct
        $cnt=$file_ext_count-1;
    
        // the variable will have a value pdf as per the sample file name mentioned above.
    
    $file_extension= $file_ext[$cnt];
    
  13. ==============================

    13.

    pathinfo는 배열입니다. 디렉토리 이름, 파일 이름, 확장자 등을 확인할 수 있습니다.

    $path_parts = pathinfo('test.png');
    
    echo $path_parts['extension'], "\n";
    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['filename'], "\n";  
    
  14. ==============================

    14.

    너는 이것도 시도 할 수있다. (PHP 5. * 및 7에서 작업)

    $info = new SplFileInfo('test.zip');
    echo $info->getExtension(); // ----- Output -----> zip
    

    팁 : 파일에 확장자가없는 경우 빈 문자열을 반환합니다. 그것을 즐겨라;)

  15. ==============================

    15.

    이것은 효과가있다.

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    
  16. ==============================

    16.

    pathinfo () 및 SplFileInfo 솔루션이 로컬 파일 시스템의 표준 파일에 대해 잘 작동하지만 유효한 이미지의 URL이 # (조각 식별자) 및 / 또는 다른 파일 이름을 가질 수 있으므로 원격 파일로 작업 할 때 어려움을 겪을 수 있음을 발견했습니다. 또는? (쿼리 매개 변수) URL의 끝에, 그 두 솔루션은 (잘못된) 파일 확장명의 일부로 취급됩니다.

    이 방법은 URL에서 pathinfo ()를 사용하여 파일 확장명 뒤에 불필요한 불필요한 불필요한 부분을 없애기 위해 먼저 파싱 한 후 신뢰할 수있는 방법이라는 것을 알았습니다.

    $url_components = parse_url($url); // First parse the URL
    $url_path = $url_components['path']; // Then get the path component
    $ext = pathinfo($url_path, PATHINFO_EXTENSION); // Then use pathinfo()
    
  17. ==============================

    17.

    당신도 이것을 시도 할 수 있습니다 :

     pathinfo(basename( $_FILES["fileToUpload"]["name"]),PATHINFO_EXTENSION)
    
  18. ==============================

    18.

    substr ($ path, strrpos ($ path, '.') + 1);을 사용하지 않는 것이 좋습니다. ? 그것은 모든 비교의 가장 빠른 방법입니다. @Kurt Zhong은 이미 대답했다.

    비교 결과를 다음에서 확인하십시오. https://eval.in/661574

  19. ==============================

    19.

    특정 폴더에서 모든 파일 확장명을 가져올 수 있으며 특정 파일 확장명으로 작업을 수행 할 수 있습니다.

    <?php
        $files=glob("abc/*.*");//abc is folder all files inside folder
        //print_r($files);
        //echo count($files);
        for($i=0;$i<count($files);$i++):
            $extension = pathinfo($files[$i], PATHINFO_EXTENSION);
            $ext[]=$extension;
            //do operation for perticular extenstion type
            if($extension=='html'){
                //do operation
            }
        endfor;
        print_r($ext);
    ?>
    
  20. ==============================

    20.

    라우터와 같은 속도를 찾고 있다면 아마도 모든 것을 토큰 화하고 싶지 않을 것입니다. /root/my.folder/my.css를 사용하면 다른 많은 답변도 실패합니다.

    ltrim(strrchr($PATH, '.'),'.');
    
  21. ==============================

    21.

    "최선의 방법"은 논쟁의 여지가 있지만, 이것이 몇 가지 이유에서 가장 좋은 방법이라고 생각합니다.

    function getExt($path)
    {
        $basename = basename($path);
        return substr($basename, strlen(explode('.', $basename)[0]) + 1);
    }
    
  22. ==============================

    22.

    용도

    str_replace('.', '', strrchr($file_name, '.'))
    

    빠른 확장 검색 (파일 이름에 파일 이름이 있는지 확인하는 경우).

  23. from https://stackoverflow.com/questions/173868/how-to-getextract-a-file-extension-in-php by cc-by-sa and MIT lisence