topic: file-io (read / write / CSV / paths / upload概念) / ch05 — パス操作とディレクトリ走査 / 演習 01

📝 ドリル 01 — `pathinfo` でパスを分解する

問題

以下のパス文字列を pathinfo で分解し、4 つの要素 (dirname / basename / filename / extension) を コロン + 半角スペース 区切りで 1 行ずつ出力してください。

$path = '/var/www/logs/access.2026-05-19.log';
▶ 3v4l で実行

期待される出力:

dirname: /var/www/logs
basename: access.2026-05-19.log
filename: access.2026-05-19
extension: log

採点

php scripts/grade.php topics/14-file-io/ch05-paths/drill/01-path-info/

ヒント

$info = pathinfo($path);
echo "dirname: {$info['dirname']}\n";
echo "basename: {$info['basename']}\n";
echo "filename: {$info['filename']}\n";
echo "extension: {$info['extension']}\n";
▶ 3v4l で実行
キー 中身
dirname ディレクトリ部分 (/var/www/logs)
basename ファイル名 (拡張子付き) (access.2026-05-19.log)
filename ファイル名 (拡張子なし) (access.2026-05-19)
extension 拡張子 (log — 先頭の . は付かない)

つまづいたら

  • extension.log (先頭にドット) になる → pathinfoextension. 抜き で返す。自分で . を付けないこと
  • filenameaccess (途中まで) になる → pathinfo「最後の . より前」filename とする。仕様通りなのでこれが正解

テストケース

期待される出力

dirname: /var/www/logs
basename: access.2026-05-19.log
filename: access.2026-05-19
extension: log

📄 starter.php(雛形)

このコードから書き始めてください。

<?php

// 与えられたパス文字列 (変更しない)
$path = '/var/www/logs/access.2026-05-19.log';

// TODO: pathinfo($path) で連想配列を得る
// $info = pathinfo(...);

// TODO: 以下の形式で 4 行出力する (キーと値はコロン + 半角スペース区切り)
// dirname: ...
// basename: ...
// filename: ...
// extension: ...
✅ 解答例を見る(自分で解いてから)
<?php

// 与えられたパス文字列を pathinfo で分解して各部分を出力する
$path = '/var/www/logs/access.2026-05-19.log';

$info = pathinfo($path);

echo "dirname: {$info['dirname']}\n";
echo "basename: {$info['basename']}\n";
echo "filename: {$info['filename']}\n";
echo "extension: {$info['extension']}\n";