How to join filesystem path strings in PHP?

function join_paths() {
    $paths = array();

    foreach (func_get_args() as $arg) {
        if ($arg !== '') { $paths[] = $arg; }
    }

    return preg_replace('#/+#',"https://stackoverflow.com/",join("https://stackoverflow.com/", $paths));
}

My solution is simpler and more similar to the way Python os.path.join works

Consider these test cases

array               my version    @deceze      @david_miller    @mark

['','']             ''            ''           "https://stackoverflow.com/"              "https://stackoverflow.com/"
['',"https://stackoverflow.com/"]            "https://stackoverflow.com/"           ''           "https://stackoverflow.com/"              "https://stackoverflow.com/"
["https://stackoverflow.com/",'a']           '/a'          'a'          '//a'            '/a'
["https://stackoverflow.com/",'/a']          '/a'          'a'          '//a'            '//a'
['abc','def']       'abc/def'     'abc/def'    'abc/def'        'abc/def'
['abc','/def']      'abc/def'     'abc/def'    'abc/def'        'abc//def'
['/abc','def']      '/abc/def'    'abc/def'    '/abc/def'       '/abc/def'
['','foo.jpg']      'foo.jpg'     'foo.jpg'    '/foo.jpg'       '/foo.jpg'
['dir','0','a.jpg'] 'dir/0/a.jpg' 'dir/a.jpg'  'dir/0/a.jpg'    'dir/0/a.txt'

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)