[PHP] ファイルパスから名称(ベースネーム)を取得する
1 min read
以下のようなパスであれば
/usr/local/test/hoge.txt
→hoge.txt
以下のようなパスであれば
/usr/local/test/
→test
このように取得したいと思います。
basename(ベースネーム)は pathinfo()関数で取得できるのですが、マルチバイトが含まれてる場合にどうも動きがよくありません。(PHP のバージョンアップで解消される問題ではあるようなのですが)
ですので、今回は自前でベースネームを取得する関数を実装します。
ベースネーム取得関数
function get_basename($path) {
// スラッシュ区切りで配列に格納
$path_array = explode('/', $path);
// 空の要素を排除する
$path_array = array_filter($path_array, "strlen");
// 一番後ろの文字列を取得
return array_pop($path_array);
}
簡単な解説
/usr/local/test/hoge.txtを「/」で区切って配列へ格納。Array
(
[0] =>
[1] => usr
[2] => local
[3] => test
[4] => hoge.txt
)
0 番目に空文字も格納されているのでそれを削除。
最後に追加された文字を取得。(ここでは 4 番目)
使い方
$path = '/usr/local/test/hoge.txt';
get_basename($path);
// => hoge.txt