PHPのbasenameの使い方: パスのベース名を得る
目次
PHPのbasenameの使い方
PHPにはパスのベース名を得る関数basename()
があります。
basename()
を使うことで、ディレクトリを含んだパスからファイル名部分を抽出することが可能になります。
パスをファイル名に変換し、画面に出力したい時などに重宝する関数と言えます。
basename()
は↓のように使います。
<?php $name = basename("/path/to/file.txt"); echo "$name\n"; ?>
↑の出力結果↓。
file.txt
この記事ではbasename()
について具体的に↓を見ていきます。
basenameの構造
パスからベース名を取得する
ベース名から拡張子を取り除く
第1引数に非文字列を渡す
問題
basenameの構造
basename()
は↓のような構造を持っています。
basename(パス, サフィックス);
basename()
はパスを解釈しません。つまり/path/../file.txt
などのパスを辿りません。
そのままの文字列として処理します。
また、basename()
はロケールに依存します。マルチバイトな文字列ではsetlocale
などでロケールをセットしておく必要があります。
パス(第1引数)
ベース名の取得対象のパスを文字列で指定します。
パスは↓のような文字列になります。
'file.txt' './path/to/file.txt' '/path/to/file.txt'
これらのパスをbasename()
に渡すと↓のようになります。
<?php basename('file.txt'); basename('./path/to/file.txt'); basename('/path/to/file.txt'); ?>
また、これらのパスを変数に保存し、その変数をbasename()
で参照することも出来ます。
<?php $path = '/path/to/file.txt' basename($path); ?>
サフィックス(第2引数)
サフィックスの文字列を指定します。
ベース名がこの文字列で終了する場合、この部分がカットされます。
拡張子などを取り除きたい時に使います。
返り値
パスのベース名部分を文字列で返します。
パスにnull
が渡された場合は空文字列を返し、整数が渡された場合は整数の文字列をベース名として返します。
パスからベース名を取得する
パスからベース名を取得します。
basename()
の第1引数パスを渡し、その結果を返り値($name
)で受け取ります。
<?php $name = basename('/path/to/file.txt'); echo "$name\n"; ?>
↑の出力結果↓。
file.txt
/path/to/file.txt
からfile.txt
というベース名が取得されました。
このようにbasename()
を使うとディレクトリを含んだパスからファイル名のみを取得できます。
ベース名から拡張子を取り除く
パスからベース名を取得し、そのベース名から拡張子を取り除きます。
basename()
の第1引数にパス(/path/to/file.txt
)を指定し、第2引数に取り除きたいサフィックス(.txt
)を指定します。
<?php $name = basename('/path/to/file.txt', '.txt'); echo "$name\n"; ?>
↑の出力結果↓。
file
/path/to/file.txt
というパスからfile.txt
というベース名が取得され、さらにそのベース名から.txt
というサフィックスが取り除かれました。
第1引数に非文字列を渡す
basename()
の第1引数にnull
を渡すとbasename()
は空文字列を返します。
<?php $name = basename(null); echo "name: $name\n"; ?>
↑の出力結果↓。
name:
整数を渡した場合は整数を文字列にしてベース名として返します。
<?php $name = basename(123); echo "name: $name\n"; ?>
↑の出力結果↓。
name: 123
問題
Q1: basename()
の第1引数として適当なものを答えよ
パス
パスワード
ユーザー名
Q2: basename()
でベース名を取得し、拡張子を取り除きたい場合に適当な対応を答えよ
basenameの第2引数を指定する
basenameの第1引数にnullを渡す
basenameの第3引数に配列を渡す
Q3: basename()
の第1引数にnull
を渡したときのbasename()
の挙動を答えよ
警告を出力する
エラーを出力する
空文字列を返す
正解はこちら↓
Q1: 1
Q2: 1
Q3: 3