次の 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