[php] PHP, 파일 확장자없이 파일 이름 얻기

이 PHP 코드가 있습니다 :

function ShowFileExtension($filepath)
{
    preg_match('/[^?]*/', $filepath, $matches);
    $string = $matches[0];

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

    if(count($pattern) > 1)
    {
        $filenamepart = $pattern[count($pattern)-1][0];
        preg_match('/[^?]*/', $filenamepart, $matches);
        return strtolower($matches[0]);
    }
}

파일 이름이 my.zip이면이 함수는를 반환합니다 .zip.

나는 반대로하고 싶습니다 my. 확장없이 함수가 반환되기를 원합니다 .

파일은 변수의 문자열 일뿐입니다.



답변

그럴 필요가 없습니다. pathinfo ()를 확인하면 경로의 모든 구성 요소가 제공됩니다.

매뉴얼의 예 :

$path_parts = pathinfo('/www/htdocs/index.html');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0

코드 출력 :

/www/htdocs
index.html
html
index

또는 다음과 같은 특정 부분 만 얻을 수 있습니다.

echo pathinfo('/www/htdocs/index.html', PATHINFO_EXTENSION); // outputs html


답변

에 대한 대안으로 pathinfo(), 당신이 사용할 수있는

  • basename() — 경로의 파일 이름 구성 요소를 반환

PHP 매뉴얼의 예

$path = "/home/httpd/html/index.php";
$file = basename($path);         // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"

확장 프로그램을 미리 제거하려면 확장 프로그램을 알고 있어야합니다.

그러나 귀하의 질문에 따라 확장명 기본 이름을 가져와야 한다고 제안 했기 때문에 Pekka의 답변 을 가장 유용한 답변 으로 표명 했습니다. 함수.


답변

https://php.net/manual/en/function.pathinfo.php

pathinfo($path, PATHINFO_FILENAME);

간단한 기능 테스트 : https://ideone.com/POhIDC


답변

또 다른 방법은 정규식을 사용하는 것입니다.

$fileName = basename($filePath);
$fileNameNoExtension = preg_replace("/\.[^.]+$/", "", $fileName);

마지막 .문자열부터 문자열 끝까지 제거 합니다.


답변

확장명이 알려지지 않은 경우이 솔루션을 사용하십시오.

 pathinfo('D:/dir1/dir2/fname', PATHINFO_FILENAME); // return "fname"
 pathinfo('D:/dir1/dir2/fname.php', PATHINFO_FILENAME); // return "fname"
 pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_FILENAME); // return "fname"

 pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_DIRNAME) . '/' . pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_FILENAME); // return "D:/dir1/dir2/fname"

PHP MAN 함수 경로 정보


답변

@Gordon 기본 이름은 확장 기능을 알고 있으면 explode를 사용할 수 없다면 잘 작동합니다.

$filename = end(explode(".", $file));


답변

위의 거의 모든 솔루션에는 변수 $ path에서 파일 이름을 가져 오는 것으로 표시됩니다.

아래 스 니펫은 확장자없이 현재 실행중인 파일 이름을 얻습니다.

echo pathinfo(basename($_SERVER['SCRIPT_NAME']), PATHINFO_FILENAME);

설명

$ _SERVER [ ‘SCRIPT_NAME’]에는 현재 스크립트의 경로가 포함되어 있습니다.