Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】PATHINFO_BASENAME定数の使い方

PATHINFO_BASENAME定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

PATHINFO_BASENAME定数は、PHPのファイルパス情報を解析するpathinfo()関数で使用される定数の一つであり、指定されたファイルパスからファイル名と拡張子を含むベース名(basename)の部分のみを取得するオプションを表す定数です。

PHPプログラミングにおいて、ファイルパスはディレクトリ構造やファイル名など様々な情報を含んでいます。pathinfo()関数は、このようなファイルパスを解析し、その構成要素を抽出する際に利用されます。この定数PATHINFO_BASENAMEpathinfo()関数の第二引数に指定すると、関数はパス全体の中からディレクトリの情報を除外し、ファイル名と、もしあればその拡張子を合わせた部分だけを結果として返します。

例えば、「/var/www/html/index.php」というファイルパスがあった場合、pathinfo()関数にPATHINFO_BASENAMEを渡すと、「index.php」という文字列が取得できます。これは、ファイルパスから純粋なファイルの名前とタイプだけが必要な場合に非常に便利です。

Webアプリケーションでユーザーがアップロードしたファイルの元の名前を取得したい場合や、URLからページ名だけを抽出したい場合など、ファイルパスから特定の情報のみが必要な場面でこの定数を用いることで、コードを簡潔に保ちつつ、正確な処理を実現できます。ファイルパスを効率的に扱うための基本的なツールとして、覚えておくと役立ちます。

構文(syntax)

1<?php
2$filename = pathinfo("/path/to/document.pdf", PATHINFO_BASENAME);
3?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP pathinfo() で basename と filename の違いを理解する

1<?php
2
3/**
4 * pathinfo() 関数における PATHINFO_BASENAME と PATHINFO_FILENAME の違いを示すサンプル。
5 *
6 * この関数は、指定されたファイルパスからファイル名部分を抽出する際に、
7 * PATHINFO_BASENAME と PATHINFO_FILENAME 定数がそれぞれどのような結果を返すかを比較します。
8 * システムエンジニアを目指す初心者でも、ファイル名操作の基本を理解できるよう、
9 * 具体的な出力例とともに説明します。
10 */
11function comparePathinfoBasenameAndFilename(): void
12{
13    // 比較に使用するサンプルファイルパス
14    $filePath = '/var/www/html/docs/report_2023.pdf';
15
16    echo "【元のファイルパス】" . PHP_EOL;
17    echo "  " . $filePath . PHP_EOL;
18    echo PHP_EOL;
19
20    // PATHINFO_BASENAME を使用した場合
21    // ファイル名と拡張子の両方を含む文字列を返します。
22    $basename = pathinfo($filePath, PATHINFO_BASENAME);
23    echo "【PATHINFO_BASENAME の結果】" . PHP_EOL;
24    echo "  ファイル名(拡張子を含む): " . $basename . PHP_EOL;
25    echo "  説明: 'report_2023.pdf' のように、ファイル名全体と拡張子を返します。" . PHP_EOL;
26    echo PHP_EOL;
27
28    // PATHINFO_FILENAME を使用した場合
29    // 拡張子を含まないファイル名のみの文字列を返します。
30    $filename = pathinfo($filePath, PATHINFO_FILENAME);
31    echo "【PATHINFO_FILENAME の結果】" . PHP_EOL;
32    echo "  ファイル名(拡張子を含まない): " . $filename . PHP_EOL;
33    echo "  説明: 'report_2023' のように、拡張子を除いたファイル名のみを返します。" . PHP_EOL;
34}
35
36// 関数を実行して結果を表示
37comparePathinfoBasenameAndFilename();

PHPのpathinfo()関数は、ファイルパスの構成要素を抽出する際に使用される便利な関数です。この関数に渡す特定の定数によって、取得したい情報の種類を細かく指定できます。特に、PATHINFO_BASENAMEPATHINFO_FILENAMEは、ファイル名部分の抽出において異なる挙動を示します。

PATHINFO_BASENAME定数は、ファイルパスから「ファイル名全体」を取得したい場合に利用されます。この定数をpathinfo()関数の第2引数に指定すると、関数は拡張子を含むファイル名の文字列を戻り値として返します。例えば、/var/www/html/docs/report_2023.pdfのようなパスからであれば、「report_2023.pdf」という結果が得られます。

一方、PATHINFO_FILENAME定数は、「拡張子を除いたファイル名」のみを取得したいときに使用します。この定数を指定した場合、pathinfo()関数は拡張子を含まないファイル名、上記の例で言えば「report_2023」という文字列を戻り値として返します。

どちらの定数もPHPの組み込み定数であり、それ自体に引数や戻り値はありませんが、pathinfo()関数に渡すことでその関数の戻り値の内容を制御します。システムエンジニアとしてファイル操作を行う際には、拡張子の有無を含めてファイル名が必要かどうかを判断し、目的に応じてこれらの定数を適切に使い分けることが重要になります。

PHPのpathinfo()関数でファイル名を取得する際、PATHINFO_BASENAMEはファイル名と拡張子の両方を含む文字列を返します。例えば「report_2023.pdf」のように、ファイル全体の名前が必要な場合に利用します。対してPATHINFO_FILENAMEは、拡張子を含まないファイル名のみを返します。例えば「report_2023」のように、拡張子を除いた名前が必要な場合に利用する定数です。これら二つの定数は名前が似ていますが、戻り値に拡張子が含まれるか否かという大きな違いがあります。目的に応じて正しく使い分けないと、ファイル処理や表示において意図しない結果となる可能性があるため、注意が必要です。特にファイル名から拡張子を省きたい場合はPATHINFO_FILENAME、拡張子を含めて取得したい場合はPATHINFO_BASENAMEと明確に意識して利用してください。

関連コンテンツ