web-dev-qa-db-ja.com

ファイルから拡張子を削除します

重複の可能性:
文字列から拡張子を削除する方法(実際の拡張子のみ!)

私はphpを初めて使用し、学ぶことがたくさんあります。キング郡アイリスソサエティのウェブサイトでMiniGalNanoを試しています。写真ファイル名がサムネイルの下に表示される必要があるという小さな例外を除いて、これは私たちの目的には非常にうまく機能します。回避策を作成しましたが、拡張機能が表示されます。関数のコードサンプルを見つけましたが、それらを既存のコードに組み込む方法がわかりません。どんな援助も大歓迎です。

リンク例: http://www.kcis.org/kcisphotogallery.php?dir=Iris.Japanese

どうもありがとう!

13
user1848938

それを行うにはいくつかの方法がありますが、私はより速い方法の1つは次のとおりだと思います

// $filename has the file name you have under the picture
$temp = explode('.', $filename);
$ext  = array_pop($temp);
$name = implode('.', $temp);

別の解決策はこれです。私はそれをテストしていませんが、ファイル名で複数の期間動作するはずです

$name = substr($filename, 0, (strlen($filename))-(strlen(strrchr($filename, '.'))));

また:

$info = pathinfo($filename);
$name = $info['filename'];
$ext  = $info['extension'];

// Shorter
$name = pathinfo($file, PATHINFO_FILENAME);

// Or in PHP 5.4
$name = pathinfo($filename)['filename'];

これらすべてにおいて、$name拡張子なしのファイル名が含まれています

30
Ascherer

そのためにpathinfo()を使用できます。

<?php

// your file
$file = 'image.jpg';

$info = pathinfo($file);

// from PHP 5.2.0 :
$file_name = $info['filename'];

// before PHP 5.2.0 :
// $file_name =  basename($file,'.'.$info['extension']);

echo $file_name; // outputs 'image'

?>
7
hek2mgl

ファイル拡張子が常に4文字になることが確実な場合(「.jpg」など)、ファイル名を出力する場所でsubstr()を使用できます。

echo substr($filename, 0, -4);

ファイル拡張子(「.jpeg」など)に多かれ少なかれ文字が含まれる画像が含まれる可能性がある場合は、最後のピリオドがどこにあるかを確認する必要があります。最初の文字からファイル名を出力しているので、そのピリオドの位置を使用して、表示する文字数を示すことができます。

$period_position = strrpos($filename, ".");
echo substr($filename, 0, $period_position);

これらの関数の詳細については、PHPマニュアル http://php.net/substr および http://php.net/)を確認してください。 strrpos

3
rickdenhaan