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.
다른 스크립팅 언어를 사용하는 사람들은 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.
pathinfo ()
$path_info = pathinfo('/foo/bar/baz.bill'); echo $path_info['extension']; // "bill"
-
==============================
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.
SplFileInfo도 있습니다 :
$file = new SplFileInfo($path); $ext = $file->getExtension();
이러한 객체를 문자열 대신 전달하면 더 나은 코드를 작성할 수 있습니다. 코드가 더 많이 사용됩니다. PHP 5.4부터 한 줄짜리 :
$ext = (new SplFileInfo($path))->getExtension();
-
==============================
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.
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.
때때로 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.
경로가 포함되어 있지 않으면 다음을 사용할 수도 있습니다.
array_pop(explode('.',$fname))
여기서 $ fname은 파일의 이름입니다 (예 : my_picture.jpg). 결과는 다음과 같습니다. jpg
-
==============================
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.
substr($path, strrpos($path, '.') + 1);
-
==============================
11.
다음은 예제입니다. $ filename이 "example.txt"
$ext = substr($filename,strrpos($filename,'.',-1),strlen($filename));
그래서 $ ext는 ".txt"가 될 것입니다.
-
==============================
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.
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.
너는 이것도 시도 할 수있다. (PHP 5. * 및 7에서 작업)
$info = new SplFileInfo('test.zip'); echo $info->getExtension(); // ----- Output -----> zip
팁 : 파일에 확장자가없는 경우 빈 문자열을 반환합니다. 그것을 즐겨라;)
-
==============================
15.
이것은 효과가있다.
$ext = pathinfo($filename, PATHINFO_EXTENSION);
-
==============================
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.
당신도 이것을 시도 할 수 있습니다 :
pathinfo(basename( $_FILES["fileToUpload"]["name"]),PATHINFO_EXTENSION)
-
==============================
18.
substr ($ path, strrpos ($ path, '.') + 1);을 사용하지 않는 것이 좋습니다. ? 그것은 모든 비교의 가장 빠른 방법입니다. @Kurt Zhong은 이미 대답했다.
비교 결과를 다음에서 확인하십시오. https://eval.in/661574
-
==============================
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.
라우터와 같은 속도를 찾고 있다면 아마도 모든 것을 토큰 화하고 싶지 않을 것입니다. /root/my.folder/my.css를 사용하면 다른 많은 답변도 실패합니다.
ltrim(strrchr($PATH, '.'),'.');
-
==============================
21.
"최선의 방법"은 논쟁의 여지가 있지만, 이것이 몇 가지 이유에서 가장 좋은 방법이라고 생각합니다.
function getExt($path) { $basename = basename($path); return substr($basename, strlen(explode('.', $basename)[0]) + 1); }
-
==============================
22.
용도
str_replace('.', '', strrchr($file_name, '.'))
빠른 확장 검색 (파일 이름에 파일 이름이 있는지 확인하는 경우).
from https://stackoverflow.com/questions/173868/how-to-getextract-a-file-extension-in-php by cc-by-sa and MIT lisence