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';期待される出力:
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";| キー | 中身 |
|---|---|
dirname |
ディレクトリ部分 (/var/www/logs) |
basename |
ファイル名 (拡張子付き) (access.2026-05-19.log) |
filename |
ファイル名 (拡張子なし) (access.2026-05-19) |
extension |
拡張子 (log — 先頭の . は付かない) |
つまづいたら
extensionが.log(先頭にドット) になる →pathinfoのextensionは.抜き で返す。自分で.を付けないことfilenameがaccess(途中まで) になる →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";