拡張子なしでファイル名を取得するにはどうすればいいですか? 質問する

拡張子なしでファイル名を取得するにはどうすればいいですか? 質問する

次の 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拡張子なしで返されるようにしたいです。

ファイルは変数内の単なる文字列です。

ベストアンサー1

そんなことは必要ありません。pathinfo ()を調べてください。パスのすべてのコンポーネントが提供されます。

$filename = pathinfo($filepath, PATHINFO_FILENAME);

拡張子なしのファイル名が表示されます。

マニュアルからのその他の例:

$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

おすすめ記事