[ PHP ] OSの違いを吸収してパスを連結する ( rtrim DIRECTORY_SEPARATOR )

Pocket

ディレクトリパスとファイル名を連結し、ファイルパスを作成するサンプルコードを掲載しています。.Net Framework での Path.Combine メソッドと同等の動作をさせています(なっていないかもしれませんが、そのときはすいません)。

スポンサーリンク

パスを連結するサンプルスクリプト

ディレクトリパスとファイル名を連結する場合に重要なことは、ディレクトリパスの最後尾が Unix 系 OS の場合ですと “ / ” で終了しているか否かにかかわらずキレイに連結させることです。

以下にパスを連結するサンプルを示します。下記は Windows 上で実行した結果になりますので、DIRECTORY_SEPARATOR は ” \ ” となります。詳細は実行結果を参照ください。

function pathCombine($dir, $file)
{
    /*
     * 文字列の最後のスラッシュまたはバックスラッシュを除去し、
     * ファイル名を連結する
     */
    return rtrim($dir, '\\/') . DIRECTORY_SEPARATOR . $file;
}

var_dump(pathCombine('/path/to///////', 'file'));
// string '/path/to\file' (length=13)

var_dump(pathCombine('/path/to', 'file'));
// string '/path/to\file' (length=13)

var_dump(pathCombine('/path/to/', 'file'));
// string '/path/to\file' (length=13)

var_dump(pathCombine('D:\\path\\to\\', 'file'));
// string 'D:\path\to\file' (length=15)

var_dump(pathCombine('D:\\path\\to', 'file'));
// string 'D:\path\to\file' (length=15)
参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *