【PHP】2つのパス(URL)を結合する関数を作ってみた

プログラム内で2つのパス(URL)を結合することがよくありますが、

$sTop = “http://exbridge.jp/”;

$sUrl = $sTop . “index.php”;

この最初の文字列の最後にスラッシュがあるかないかで結合の仕方が変わってくる。いちいち気にしたくないので、自動で補完して結合してくれるような関数がないものかと探してみたけど、PHPにはないみたい。

VBScriptではBuildPath

.NETではcombine

しょうがないので自作してpetitworkに組み込みました。円マーク「¥」にも対応しているのでURLでもローカルパスでも使えるはず。 他にスマートな方法があれば教えてほしい。

/**
 * 2つのURL(パス)を結合するときにスラッシュがある場合でもない場合でも
 * うまいこと結合して結果を返す
 *
 * @access public
 * @param  string $sPath1    結合文字列(前)
 * @param  string $sPath2    結合文字列(後)
 * @param  string $sSeparate 連結文字列。デフォルトは「/」
 * @return string/boolean 2つのパスの結合結果(失敗時はfalse)
 */
function getBuildPath($sPath1, $sPath2, $sSeparate = DS ) {
    $sReturn = '';
    if (strlen($sPath1) == 0) {
        return false;
    }
    $sPath1 = rtrim($sPath1, '\/');
    $sPath2 = ltrim($sPath2, '\/');
    $sReturn = $sPath1 . $sSeparate . $sPath2;
    return $sReturn;
}