PHP通過 realpath將相對路徑轉換為絕對路徑的代碼執行個體

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於PHP通過 realpath將相對路徑轉換為絕對路徑的代碼執行個體,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

相對路徑 -> 絕對路徑:

<?php/** * @param string $in_rel: relative directory * @param string $out_abs: absolute directory */define('PATH_MAX', 255);function sub_rel2abs(string $in_rel, string &$out_abs) {    $i_rtn = 0;  // return value    $ss_rel = "";  // for relative path build    $st_fpos = 0;    // front separator index    $sv_path = [];   // pide path to array     $st_pos = strpos($in_rel, DIRECTORY_SEPARATOR);    $npos = 0;    while ($npos != $st_pos) {        if ($st_pos != 0) {            array_push($sv_path, substr($in_rel, $st_fpos, $st_pos - $st_fpos));        }// next...        $st_fpos = $st_pos;   // set current pos to last pos        $st_pos++;            // from next index        $st_pos = strpos($in_rel, DIRECTORY_SEPARATOR, $st_pos);  // next separator index    } // while ( $npos != $st_pos )// final separator    array_push($sv_path, substr($in_rel, $st_fpos));     $lpc = 0;    // loop count    $i_max = count($sv_path);    while ($lpc < $i_max && 0 === $i_rtn) {        $ss_rel .= $sv_path[$lpc];// relative path => relative path        $c_abs = realpath($ss_rel);        if ($c_abs === false) {            $i_rtn = -1;        } else {            $ss_rel = $c_abs;            $i_rtn = 0;        }        $lpc++;    } // while (count($sv_path)>0) // normal ending    if (0===$i_rtn) {        $out_abs = $ss_rel;  // set converted path    }    return $i_rtn;} // test$inDir = "/Users/Mch/Code/php/Directory";is_dir($inDir) || mkdir($inDir, 0777, true); $wd = __DIR__;chdir($inDir); $out = "";echo sub_rel2abs("../../../eclipse-workspace/blog.zip", $out).PHP_EOL;echo $out.PHP_EOL; chdir($wd);@rmdir($inDir);?>

output:

0/Users/Mch/eclipse-workspace/blog.zip

這裡直接realpath就可以了,為什麼多此一舉?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.