Home  >  Article  >  Backend Development  >  PHP code example to convert relative path to absolute path through realpath

PHP code example to convert relative path to absolute path through realpath

不言
不言Original
2018-08-07 11:19:563180browse

This article brings you a code example about PHP converting a relative path to an absolute path through realpath. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Relative path-> Absolute path:

<?php
/**
 * @param string $in_rel: relative directory
 * @param string $out_abs: absolute directory
 */
define(&#39;PATH_MAX&#39;, 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

Just realpath here, why bother?

Recommended related articles:

How to store session in database and use it in PHP (with code)

How does PHP access URL? Summary of methods for accessing URLs in php (code)

The above is the detailed content of PHP code example to convert relative path to absolute path through realpath. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn