PHPの正規表現によるパターンマッチで、ファイル名から拡張子を取り除いた文字列を取り出す方法です。

1
2
3
4
5
6
7
8
<?php
echo(get_filename("test.txt")); //test
echo(get_filename("test.test.txt")); //test.test
 
function get_filename($file) {
	return preg_replace("/(.+)(\.[^.]+$)/", "$1", $file);
}
?>

パターンマッチ内の1つ目のパーレン「(.+)」で、任意の1文字以上の文字列を表します。
2つ目のパーレン「(\.[^.]+$)」で、文末にある、ドット1文字から始まり、ドット以外の1文字以上の文字列を表しています。
「$1」の部分を「$2」とすることで、2つ目のパーレン(上記の場合「.txt」となります)を取り出すことができます。