パスからファイル名だけを取得する、basename関数
Table of Contents
やりたいこと
・PHPでファイルのパスからファイル名だけを取得する
・ファイル名を整形して取得する
basename関数
昨日、PHPの勉強をしていたところbasename関数という関数に出会ったのですが、後で忘れそうな感じがするので、備忘録として記事にまとめておきたいと思います。
basename ( string $path
[, string $suffix
] ) : string
$path: ファイルのパス名
$suffix: $suffixと$pathの末尾が一致している場合、ファイル名からその部分がカットされる
はじめに、サンプルコードを提示します。
1 2 3 4 5 6 7 |
<?php print basename('section2/checkdate.php'); //checkdate.php print basename('section2/checkdate.php', '.php'); //checkdate print basename('section2/checkdate.php', '.txt'); //checkdate.php print basename('section2/checkdate.php', 'date.php'); //check print basename('section2/checkdate.php', 'date.txt'); //checkdate.php print basename('section2/checkdate.php', 'hoge.php'); //checkdate.php |
2行目が、最もシンプルな例になります。パス名「section2/checkdate.php」から、ファイル名の部分である「checkdate.php」が結果として返されます。なお、第2引数は省略されています。
3行目に関しては、パス名「section2/checkdate.php」からファイル名である「checkdate.php」を取り出し、そこから第2引数に指定されている「.php」をカットするので、結果として「checkdate」が返されます。
4行目では、ここまでと同様に、パス名「section2/checkdate.php」からファイル名「checkdate.php」を取り出します。その後、第2引数をカットしたいのですが、第2引数は「.txt」であり、「checkdate.php」の末尾と一致しないので、カットは行われません。したがって、そのまま「checkdate.php」が返されます。
5行目は、基本的に3行目と同じですが、第2引数の指定のしかたによっては、拡張子よりも前の部分までカットできるという例です。
6行目や7行目のような、第2引数が第1引数の末尾といわゆる「部分一致」の場合は、カットは行われませんので注意しましょう。一致している部分だけがカットされるというわけではありません。