2010-12-13 7 views

答えて

9

使用pathinfoを。

<?php 
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); 

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

注意:PHP> = 5.2の使用にないなら、これはあなたがpathinfo()機能を見てみる必要がありますファイル名

$path_parts['filename'] = substr($path_parts['basename'], 0, -1*strlen($path_parts['extension'])-1); 
+0

複雑でエラーが発生しやすい代替機能ではなく、組み込み関数のための+1 –

-3

私が使っやっていないようです:

$file_name = current(explode(".", $file_name)); 
+0

はいこの –

+0

を使用して、より良いので 'のようなファイル名を持つものですfoo.bar.txt'? – Joey

+0

これは最初の '.'まで何かを与えます。 'my.strange.path/i.like.dots.php'ではどうなりますか? –

1

を構成します。

+0

@サルマンA:私が投稿したリンクについて、どのミラーがリンクされているかは本当に重要ですか? – AgentConundrum

+0

変更を元に戻しました。 –

+0

@サルマン:私はそれを自分でやることができた。私はちょうどあなたがそれが必要だと思った理由を知りたがっていました。 – AgentConundrum

1
substr($file_name, 0, -4); 
+0

'archive.tar.gz'についてはどうですか? – Gordon

+0

あなたは正しいです!唯一の安全な方法は、実際にはpathinfo() –

+0

を使用することです。このサイトの他の場所にあるpathinfoソリューションは、この場合「archive.tar」を返します。 Afaikは二重の拡張に対処する信頼できる解決策はありません;) – Gordon

2

あなたが行うことができます。

複数のドットの顔で@fireと同様ですが、より堅牢な
$file_name_no_ext = pathinfo($file_name , PATHINFO_FILENAME); 
0

を:

$comps = explode('.', $filename); 
unset($comps[count($comps) - 1]); 
$ext = implode('.', $comps); 
関連する問題