PHPのbasenameの使い方: パスのベース名を得る

55, 2020-09-23

目次

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引数として適当なものを答えよ

  1. パス

  2. パスワード

  3. ユーザー名

Q2: basename()でベース名を取得し、拡張子を取り除きたい場合に適当な対応を答えよ

  1. basenameの第2引数を指定する

  2. basenameの第1引数にnullを渡す

  3. basenameの第3引数に配列を渡す

Q3: basename()の第1引数にnullを渡したときのbasename()の挙動を答えよ

  1. 警告を出力する

  2. エラーを出力する

  3. 空文字列を返す


正解はこちら↓

Q1: 1
Q2: 1
Q3: 3